Pagtandi ug pagpili sa mga sistema sa paglalin sa datos

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos

Ang modelo sa datos lagmit nga magbag-o sa panahon sa proseso sa pag-uswag, ug sa usa ka punto kini mohunong sa katumbas sa database. Siyempre, ang database mahimong mapapas, ug unya ang ORM maghimo og bag-ong bersyon nga mohaum sa modelo, apan kini nga pamaagi mosangpot sa pagkawala sa kasamtangan nga datos. Sa ingon, ang gimbuhaton sa sistema sa paglalin mao ang pagsiguro nga, ingon usa ka sangputanan sa usa ka pagbag-o sa eskema, kini gi-synchronize sa modelo sa datos sa aplikasyon nga wala mawala ang kasamtangan nga datos.

Niini nga artikulo, gusto namong ikonsiderar ang lainlaing mga himan alang sa pagdumala sa mga paglalin sa database. Kami nanghinaut nga kini nga pagrepaso mapuslanon alang sa mga nag-develop nga nag-atubang sa parehas nga kapilian.

Tumong

Ang among kompanya karon aktibo nga nagpalambo sa sunod nga henerasyon sa produkto - Docs Security Suite (DSS). Ang bahin sa server gisulat sa .Net Core, ug ang Entity Framework Core gigamit isip DBMS, matag usa. Sa pagdesinyo ug aplikasyon, among gigamit ang Code First approach.

Ang modelo sa domain sa aplikasyon gihimo sa daghang mga developer sa parehas nga oras - ang matag usa responsable sa iyang kaugalingon nga lohikal nga bahin sa sistema.

Ang miaging henerasyon sa DSS migamit sa classic Entity Framework Migrations (EF 6) isip sistema sa pagdumala sa paglalin. Bisan pa, pipila ka mga reklamo ang natipon batok kaniya, ang panguna niini mao nga ang EF kulang sa usa ka maayong pamaagi sa pagsulbad sa mga panagbangi sa bersyon. Kini nga kamatuoran makapasuko gihapon kanamo kung ang pag-ayo sa bug ingon bahin sa suporta, mao nga nakahukom nga ikonsiderar ang mga kapilian nga kapilian.

Isip resulta sa panaghisgot, ang mosunod nga mga kinahanglanon alang sa sistema sa pagdumala sa paglalin naporma:

  1. Suporta alang sa lainlaing DBMS. Mandatory nga MS SQL Server, PostgreSQL, Oracle, apan posible nga magamit ang uban
  2. Nagtrabaho sa ORM Sa sinugdan, ang EF Core kinahanglan nga gamiton, apan sa yugto sa disenyo, ang ubang mga ORM andam na nga ikonsiderar.
  3. Awtomatikong henerasyon sa mga paglalin. Tungod sa pag-uswag sa Code First, gusto nako nga likayan ang panginahanglan sa "pagpintal gamit ang mga pen" nga paglalin
  4. Mga panagsumpaki sa bersyon. Sa usa ka giapod-apod nga palibot sa pag-uswag, kung maghiusa, ang EF Core mahimong mahulog sa mga panagbangi. Nahimo kini nga usa ka hinungdanon nga problema tungod kay ang lainlaing mga bahin sa aplikasyon gimugna sa lainlaing mga developer, mao nga kinahanglan nimo nga mogahin og daghang oras sa matag usa.
  5. Naugmad nga dokumentasyon ug suporta. Dinhi, ingon kanamo, wala’y kinahanglan nga katin-awan.
  6. Libre. Ang kriterya kay kondisyonal, tungod kay dili kaayo mahal nga mga sistema o mahal, apan sulundon sa kasayon, andam usab kami nga ikonsiderar

Isip resulta sa usa ka gamay nga pagtuon, ang mosunod nga mga opsyon nakit-an ug gikonsiderar nga tilinguhaon alang sa konsiderasyon:

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

Ug karon gamay pa

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos
EntityFramework Core nga Paglalin

Siyempre, kini ang una ug panguna nga kapilian alang sa pagpili. Usa ka lumad nga instrumento nga nagtrabaho sa gawas sa kahon nga wala’y bisan unsang pagsayaw sa tamburin. Usa ka dako nga kantidad sa dokumentasyon, opisyal ug dili sa ingon, kayano, ug uban pa. Bisan pa, ang mga pag-angkon nga gihimo batok sa klasiko nga EF adunay kalabotan usab alang sa EF Core.

Busa, ang mga pros gipasiugda alang sa EF Core:

  • Suporta sa Microsoft, dokumentasyon, lakip sa Russian, usa ka dako nga komunidad
  • Auto-generation sa mga paglalin base sa CodeFirst
  • Kung itandi sa EF 6, ang EF Core wala na magtipig og snapshot sa database. Ang pag-deploy sa database dili na kinahanglan kung nagtrabaho kauban ang EF Core sa Code First
  • Tungod kay kami nagsayaw gikan sa Code First, posible nga magpahigayon og usa ka paglalin ngadto sa tanang gikinahanglan nga data access providers
  • Sama sa alang sa mga provider, gisuportahan niini ang PostgreSQL, Oracle, ug uban pa, ug uban pa, ug bisan ang MS SQL Server 

Ug usab mga kontra:

  • Ang resolusyon sa panagbangi nagpabilin nga pareho. Kinahanglan nga maghimo usa ka han-ay sa mga paglalin ug i-update ang mga snapshot sa database
  • Pagsalig sa mga modelo nga gibase sa kung diin namugna ang mga paglalin

DbUp

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos
dbup.github.io

Ang DbUp usa ka .NET library nga gi-install sa NuGet ug nagtabang sa pagduso sa mga pagbag-o sa SQL Server. Gisubay niini kung unsang mga script sa pagbag-o ang nahimo na ug gipadagan ang mga gikinahanglan aron ma-update ang database. Ang librarya mitubo gikan sa usa ka open source blogging engine project sa ASP.NET ug anaa ubos sa lisensya sa MIT, ug ang code anaa sa GitHub. Ang mga paglalin gihulagway gamit ang T-SQL.

Unsa ang mga bentaha dinhi:

  • Suporta alang sa daghang gidaghanon sa DBMS (MS SQL Server, PstgreSQL, MySQL)
  • Tungod kay ang mga script gisulat sa T-SQL, kini tan-awon nga yano ra.
  • Ang mga panagbangi masulbad usab sa SQL

Ug ang mga kontra:

  • Sa tanan nga lainlain nga gisuportahan nga DBMS, ang Oracle dili usa kanila
  • Dili makig-uban sa ORM
  • Ang pagsulat sa mga script sa T-SQL nga adunay "mga gunitanan" dili ang among gipaningkamotan
  • Ang dokumentasyon ug komunidad kay ingon-ana, bisan kung sa mga termino sa pagsulat sa mga script sa SQL, dili kini kinahanglan.

RoundhouseE

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos
github.com/chucknorris/roundhouse

Kini nga galamiton sa pagdumala sa paglalin, nga giapod-apod ubos sa Apache 2.0 nga lisensya, sama sa nauna, nagdagan sa T-SQL migrations engine. Dayag, ang mga developers naka-focus sa pagsulbad sa teknikal nga mga problema sa mga termino sa pagsuporta sa DBMS, kay sa paghimo sa usa ka komportable nga proseso sa kalamboan.

Mga Pro:

  • Nagsuporta sa gikinahanglan nga DBMS (lakip ang Oracle)

Kahinumduman:

  • Ang Oracle (ingon man ang Access, nga walay kalabotan alang kanamo) wala gisuportahan sa .NET Core, sa .NET Full Framework lang.
  • Dili molihok sa ORM
  • Bisan gamay nga dokumentasyon kaysa sa miaging himan
  • Pag-usab - ang mga paglalin gisulat pinaagi sa mga script

ThinkingHome.Migrator

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos

Himan alang sa bersyon nga paglalin sa database schema ngadto sa .NET Core nga plataporma, giapod-apod ubos sa MIT nga lisensya. Ang developer mismo nagsulat bahin sa pinakabag-o nga bersyon niini hapit usa ka tuig ang milabay.

Mga Pro:

  • Gipahaom alang sa .NET Core
  • Gipatuman ang usa ka branching sequence sa mga paglalin
  • Gipatuman ang migration logging

Kahinumduman:

  • Ang katapusan nga update usa ka tuig na ang milabay. Dayag nga ang proyekto wala gisuportahan
  • Wala gisuportahan sa Oracle (ang artikulo nag-ingon nga kini tungod sa kakulang sa usa ka lig-on nga pagpatuman alang sa .NET Core - apan kini usa ka tuig na ang milabay)
  • Nawala ang auto-generation sa mga paglalin

Sa kinatibuk-an, ang proyekto daw nagsaad, labi na kung kini naugmad, apan kinahanglan namon nga maghimo usa ka desisyon dinhi ug karon.

Fluent Migrator

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos
github.com/fluentmigrator/fluentmigrator

Ang labing popular nga himan sa paglalin nga adunay daghang base sa fan. Giapod-apod ubos sa lisensya sa Apache 2.0. Ingon sa gipahayag sa paghulagway, usa ka gambalay sa paglalin para sa .NET, susama sa Ruby on Rails Migrations. Ang mga pagbag-o sa eskema sa database gihulagway sa mga klase sa C #.

Adunay mga plus dinhi:

  • Suporta alang sa gikinahanglan nga DBMS
  • .NET Core nga suporta
  • Dako nga naugmad nga komunidad
  • Ang mga panagbangi sa paglalin masulbad nga sunud-sunod - ang han-ay sa paglalin gipiho. Dugang pa, kung ang usa ka panagbangi motungha sa palibot sa usa ka entidad, kung gihiusa ang code, kini masulbad sa parehas nga paagi sama sa nahabilin nga code.
  • Adunay mga profile nga nagdagan pagkahuman sa malampuson nga paglalin. Ug mahimo silang magdala sa mga gimbuhaton sa serbisyo. Ang katapusan nga pag-update usa ka bulan ang milabay, nga mao, ang proyekto buhi

Mahitungod sa mga kontra, unya dinhi:

  • Nawala ang auto-generation sa mga paglalin
  • Nawala ang komunikasyon sa mga modelo sa EF
  • Walay db snapshots

Unsa ang among gipili?

Pagtandi ug pagpili sa mga sistema sa paglalin sa datos

Ang pinakainit nga debate nagtuyok sa duha ka parametro - auto-generation of migrations ug sane conflict resolution. Ang ubang mga hinungdan dili kaayo makahadlok. Tungod niini, base sa mga resulta sa diskusyon, ang team nakahukom nga gamiton ang Fluent Migrator sa bag-ong proyekto. Kay ang resolusyon sa mga panagbangi sa umaabot nga dad-on sa usa ka mas dako nga gidaghanon sa mga pluses.

kaplag

Siyempre, walay hingpit nga mga himan. Mao nga kinahanglan namon nga unahon ang among "Wishlist" aron makapili. Bisan pa, alang sa ubang mga team ug uban pang mga buluhaton, ang ubang mga hinungdan mahimong mahukmanon. Kami nanghinaut nga kini nga artikulo makatabang kanimo sa paghimo sa imong pagpili.

Source: www.habr.com

Idugang sa usa ka comment