Adatmigrációs rendszerek összehasonlítása, kiválasztása

Adatmigrációs rendszerek összehasonlítása, kiválasztása

Adatmigrációs rendszerek összehasonlítása, kiválasztása

Az adatmodell a fejlesztési folyamat során hajlamos megváltozni, és egy ponton már nem felel meg az adatbázisnak. Természetesen az adatbázis törölhető, majd az ORM létrehoz egy új verziót, amely megfelel a modellnek, de ez az eljárás a meglévő adatok elvesztéséhez vezet. Így a migrációs rendszer feladata annak biztosítása, hogy egy sémaváltás eredményeként a meglévő adatok elvesztése nélkül szinkronizálódjon az alkalmazás adatmodelljével.

Ebben a cikkben az adatbázis-áttelepítések kezelésére szolgáló különféle eszközöket szeretnénk áttekinteni. Reméljük, hogy ez az áttekintés hasznos lesz azoknak a fejlesztőknek, akik hasonló választás előtt állnak.

Feladat

Cégünk jelenleg aktívan fejleszti a termék következő generációját – a Docs Security Suite-t (DSS). A szerver rész .Net Core nyelven íródott, és az Entity Framework Core DBMS-ként használatos. Egy alkalmazás tervezésekor a Code First megközelítést alkalmazzuk.

Az alkalmazási tartomány modelljét egyidejűleg több fejlesztő hozza létre – mindegyik felelős a saját logikai rendszerrészéért.

A DSS előző generációja a klasszikus Entity Framework Migrations-t (EF 6) használta migrációkezelő rendszerként. Néhány panasz azonban felgyülemlett ellene, a fő az, hogy az EF-től hiányzik az épelméjű megközelítés a verziókonfliktusok megoldására. Ez a tény még mindig felzaklat minket, amikor a támogatás részeként javítjuk a hibákat, ezért úgy döntöttünk, hogy alternatív lehetőségeket fontolgatunk.

A megbeszélés eredményeként a következő követelmények alakultak ki a migrációkezelő rendszerrel szemben:

  1. Különféle DBMS-ek támogatása. MS SQL Server, PostgreSQL, Oracle szükséges, de lehetséges, hogy másokat is használhat
  2. Munka az ORM-mel. Kezdetben az EF Core használatát tervezték, de a tervezési szakaszban készen álltunk más ORM-ek megfontolására.
  3. Áttelepítések automatikus generálása. Figyelembe véve a Code First fejlesztését, szeretném elkerülni a „kézírásos” migrációt
  4. Verzióütközések. Elosztott fejlesztői környezetben az egyesülés során az EF Core konfliktusoktól szenvedhet. Ez jelentős problémává válik, mivel az alkalmazás különböző részeit különböző fejlesztők hozzák létre, így sok időt kell szánni mindegyikre.
  5. Speciális dokumentáció és támogatás. Itt, úgy tűnik, nincs szükség magyarázatra
  6. Ingyenes. A kritérium feltételes, mivel a rendszerek nem túl drágák vagy drágák, de kényelmi szempontból ideálisak, készek voltunk arra is, hogy

Egy kis kutatás eredményeként a következő lehetőségeket találtuk és tartottuk megfontolandónak:

  1. EF Core Migrations
  2. DBup
  3. KerekházE
  4. ThinkingHome.Migrator
  5. Folyékony migrátor

És most egy kicsit részletesebben

Adatmigrációs rendszerek összehasonlítása, kiválasztása
EntityFramework Core Migrations

Természetesen ez volt az első és legfontosabb választási lehetőség. Egy natív hangszer, amely a dobozból kivehető, anélkül, hogy a tamburával babrálna. Nagy mennyiségű dokumentáció, hivatalos és nem olyan, egyszerűség stb. A klasszikus EF-re vonatkozó panaszok azonban az EF Core-ra is nagyon relevánsak.

Így kiemeljük az EF Core előnyeit:

  • Microsoft támogatás, dokumentáció, beleértve az orosz nyelvet is, hatalmas közösség
  • Áttelepítések automatikus generálása a CodeFirst alapján
  • Az EF 6-hoz képest az EF Core már nem tárol pillanatképet az adatbázisról. Amikor az EF Core-al dolgozik a Code First-ben, többé nem szükséges adatbázist telepíteni
  • Mivel a Code Firsttől táncolunk, lehetséges egyetlen migráció az összes szükséges adathozzáférési szolgáltatóhoz
  • A szolgáltatókat illetően a PostgreSQL támogatott, az Oracle támogatott stb., stb., sőt még az MS SQL Server is 

És a hátrányai is:

  • A konfliktusmegoldás változatlan maradt. Szükséges az áttelepítések sorrendje és az adatbázis-pillanatképek frissítése
  • Függőség azoktól a modellektől, amelyeken a migráció létrejön

DbUp

Adatmigrációs rendszerek összehasonlítása, kiválasztása
dbup.github.io

A DbUp egy .NET-könyvtár, amelyet a NuGet telepít, és segít a változtatások átküldésében az SQL Serverre. Nyomon követi, hogy mely változtatási szkriptek lettek már végrehajtva, és lefuttatja azokat, amelyek az adatbázis frissítéséhez szükségesek. A könyvtár az ASP.NET nyílt forráskódú blogolómotorjának projektjéből nőtt ki, és MIT licenc alatt létezik, a kód pedig a GitHubon található. A migráció leírása T-SQL használatával történik.

Mik az előnyök:

  • Nagyszámú DBMS támogatása (MS SQL Server, PstgreSQL, MySQL)
  • Mivel a szkriptek T-SQL-ben vannak írva, meglehetősen egyszerűnek tűnnek
  • Az ütközéseket is SQL segítségével oldják meg

És a hátrányok:

  • A támogatott DBMS-ek sokféleségével az Oracle nem tartozik ezek közé
  • Nem működik együtt az ORM-mel
  • A T-SQL-szkriptek kézi írása nem az, amire vágytunk
  • A dokumentáció és a közösség olyan-olyan, bár az SQL-szkriptek írása szempontjából nem feltétlenül szükséges.

KerekházE

Adatmigrációs rendszerek összehasonlítása, kiválasztása
github.com/chucknorris/roundhouse

Ez az Apache 2.0 licenc alatt terjesztett migrációkezelő eszköz az előzőhöz hasonlóan a T-SQL migrációs motoron fut. Úgy tűnik, a fejlesztők a DBMS-támogatással kapcsolatos technikai problémák megoldását helyezték előtérbe, nem pedig egy kényelmes fejlesztési folyamatot.

Előnyök:

  • Támogatja a szükséges DBMS-t (beleértve az Oracle-t is)

Hátrányok:

  • Az Oracle (valamint a számunkra lényegtelen Access) nem támogatott a .NET Core-on, csak a .NET Full Framework-en
  • ORM-mel nem működik
  • Még kevesebb a dokumentáció, mint az előző eszköznél
  • Ismételten: a migrációkat szkriptek írják

ThinkingHome.Migrator

Adatmigrációs rendszerek összehasonlítása, kiválasztása

Eszköz a verziószámú adatbázisséma áttelepítéséhez a .NET Core platformra, MIT licenc alatt terjesztve. Legújabb verziójáról maga a fejlesztő írt közel egy éve.

Előnyök:

  • .NET Core-hoz tervezték
  • Elágazó migrációs sorozatot valósított meg
  • Megvalósított migrációs naplózás

Hátrányok:

  • Utoljára frissítve egy éve. A projekt nyilvánvalóan nem támogatott
  • Az Oracle nem támogatja (a cikk szerint ez a .NET Core stabil megvalósításának hiánya miatt van - de ez egy éve)
  • Nincs automatikus migráció generálása

Összességében a projekt ígéretesnek tűnik, különösen, ha fejlődne, de itt és most kellett döntést hoznunk.

Folyékony migrátor

Adatmigrációs rendszerek összehasonlítása, kiválasztása
github.com/fluentmigrator/fluentmigrator

A legnépszerűbb migrációs eszköz rajongók nagy seregével. Az Apache 2.0 licenc alatt terjesztve. Ahogy a leírásban is szerepel, ez egy .NET migrációs keretrendszer, hasonlóan a Ruby on Rails Migrationshez. Az adatbázisséma módosításait a C# osztályok írják le.

Itt vannak előnyei:

  • A szükséges DBMS támogatása
  • .NET Core támogatás
  • Nagy fejlett közösség
  • Az áttelepítések közötti ütközések szekvenciális feloldása – az áttelepítések végrehajtási sorrendje meg van adva. Ezen túlmenően, ha konfliktus merül fel egy entitás körül, akkor a kód egyesítésekor az ugyanúgy feloldódik, mint a kód többi részén.
  • Vannak olyan profilok, amelyek sikeres migráció után futnak le. És szerviz funkciókat is hordozhatnak.A legutóbbi frissítés egy hónapja volt, vagyis él a projekt

Ami a mínuszokat illeti, itt vannak:

  • Nincs automatikus migráció generálása
  • Nincs kapcsolat az EF modellekkel
  • Nincsenek adatbázis-pillanatképek

Mi volt a választásunk?

Adatmigrációs rendszerek összehasonlítása, kiválasztása

A heves viták két paraméter körül forogtak: a migráció automatikus generálása és a konfliktusok ésszerű megoldása. Más tényezők sokkal kevésbé voltak ijesztőek. Ennek eredményeként a megbeszélés eredményei alapján a csapat úgy döntött, hogy a Fluent Migratort használja az új projektben. Mert a konfliktusok megoldása a jövőben sokkal több haszonnal jár.

Álláspontja

Természetesen tökéletes eszközök nincsenek. Tehát fontossági sorrendbe kellett hoznunk a „kívánságainkat”, hogy választhassunk. Más csapatoknál és egyéb feladatoknál azonban más tényezők is döntőek lehetnek. Reméljük, hogy ez a cikk segít a választásban.

Forrás: will.com

Hozzászólás