Поређење и избор система за миграцију података

Поређење и избор система за миграцију података

Поређење и избор система за миграцију података

Модел података има тенденцију да се мења током процеса развоја и у неком тренутку више не одговара бази података. Наравно, база података се може избрисати и тада ће ОРМ креирати нову верзију која ће одговарати моделу, али ће ова процедура довести до губитка постојећих података. Дакле, функција система за миграцију је да обезбеди да, као резултат промене шеме, буде синхронизован са моделом података у апликацији без губитка постојећих података.

У овом чланку желимо да погледамо различите алате за управљање миграцијама базе података. Надамо се да ће ова рецензија бити корисна за програмере који се суочавају са сличним избором.

Задатак

Наша компанија тренутно активно развија следећу генерацију производа – Доцс Сецурити Суите (ДСС). Серверски део је написан у .Нет Цоре, а Ентити Фрамеворк Цоре се користи као ДБМС. Када дизајнирамо апликацију, користимо приступ Цоде Фирст.

Модел домена апликације креира неколико програмера у исто време – сваки је одговоран за свој логички део система.

Претходна генерација ДСС-а користила је класичне миграције оквира ентитета (ЕФ 6) као систем управљања миграцијама. Међутим, нагомилале су се неке жалбе против њега, а главна је да ЕФ-у недостаје разуман приступ решавању сукоба верзија. Ова чињеница нас и даље узнемирава када исправљамо грешке као део подршке, па смо одлучили да размотримо алтернативне опције.

Као резултат дискусије, формирани су следећи захтеви за систем управљања миграцијама:

  1. Подршка за различите ДБМС. Потребни су МС СКЛ Сервер, ПостгреСКЛ, Орацле, али је потенцијално могуће користити и друге
  2. Рад са ОРМ-ом. У почетку је било планирано да се користи ЕФ Цоре, али у фази пројектовања били смо спремни да размотримо друге ОРМ-ове
  3. Аутоматско генерисање миграција. Узимајући у обзир развој Цоде Фирст-а, желео бих да избегнем потребу да „пишем“ миграције
  4. Сукоби верзија. У дистрибуираном развојном окружењу, када се спаја, ЕФ Цоре може патити од сукоба. Ово постаје значајан проблем јер различите делове апликације креирају различити програмери, тако да морате да потрошите доста времена на сваки
  5. Напредна документација и подршка. Овде, чини нам се, није потребно никакво објашњење
  6. Бесплатно. Критеријум је условљен, пошто системи нису ни скупи ни скупи, али идеални у смислу погодности, такође смо били спремни да размотримо

Као резултат малог истраживања, пронађене су следеће опције које су биле пожељне за разматрање:

  1. ЕФ Цоре Миграције
  2. ДБуп
  3. РоундхоусеЕ
  4. ТхинкингХоме.Мигратор
  5. Флуент Мигратор

А сада мало детаљније

Поређење и избор система за миграцију података
ЕнтитиФрамеворк Цоре Миграције

Наравно, ово је била прва и главна опција за избор. Изворни инструмент који ради ван кутије без икаквог петљања са тамбуром. Велика количина документације, званичне и не тако, једноставности итд. Међутим, притужбе на класични ЕФ су такође веома релевантне за ЕФ Цоре.

Дакле, предности за ЕФ Цоре су истакнуте:

  • Мицрософт подршка, документација, укључујући и на руском, огромна заједница
  • Аутоматско генерисање миграција засновано на ЦодеФирсту
  • У поређењу са ЕФ 6, ЕФ Цоре више не чува снимак базе података. Када радите са ЕФ Цоре у Цоде Фирст-у, више није потребно постављати базу података
  • Пошто плешемо од Цоде Фирст-а, могуће је извршити једну миграцију на све потребне провајдере приступа подацима
  • Што се тиче провајдера, подржан је ПостгреСКЛ, подржан је Орацле итд, итд, па чак и МС СКЛ Сервер 

И такође недостаци:

  • Решавање сукоба је остало на истом нивоу. Неопходно је секвенцирати миграције и ажурирати снимке базе података
  • Зависност од модела на којима се генеришу миграције

ДбУп

Поређење и избор система за миграцију података
дбуп.гитхуб.ио

ДбУп је .НЕТ библиотека коју инсталира НуГет и која помаже да се промене на СКЛ серверу. Он прати које су скрипте промене већ извршене и покреће оне које су неопходне за ажурирање базе података. Библиотека је настала из пројекта за опен соурце мотор за блоговање на АСП.НЕТ-у и постоји под МИТ лиценцом, а код се налази на ГитХуб-у. Миграције су описане коришћењем Т-СКЛ-а.

Које су предности:

  • Подршка за велики број ДБМС (МС СКЛ Сервер, ПстгреСКЛ, МиСКЛ)
  • Пошто су скрипте написане у Т-СКЛ-у, изгледају прилично једноставно
  • Конфликти се такође решавају помоћу СКЛ-а

И минуси:

  • Уз сву разноликост подржаних ДБМС-ова, Орацле није један од њих
  • Не ступа у интеракцију са ОРМ-ом
  • Писање Т-СКЛ скрипти ручно није оно чему смо тежили
  • Документација и заједница су тако-такви, иако у смислу писања СКЛ скрипти можда нису потребни.

РоундхоусеЕ

Поређење и избор система за миграцију података
гитхуб.цом/цхуцкноррис/роундхоусе

Овај алат за управљање миграцијама, дистрибуиран под лиценцом Апацхе 2.0, као и претходни, ради на Т-СКЛ машини за миграцију. Очигледно, програмери су дали приоритет решавању техничких проблема у вези са подршком за ДБМС, уместо да креирају удобан развојни процес.

Предности:

  • Подржава неопходне ДБМС (укључујући Орацле)

Против:

  • Орацле (као и Аццесс, који је за нас небитан) није подржан на .НЕТ Цоре, само на .НЕТ Фулл Фрамеворк-у
  • Не ради са ОРМ-ом
  • Постоји још мање документације од претходног алата
  • Опет – миграције се пишу скриптама

ТхинкингХоме.Мигратор

Поређење и избор система за миграцију података

Алат за верзионисану миграцију шеме базе података на .НЕТ Цоре платформу, дистрибуиран под МИТ лиценцом. Сам програмер је писао о његовој најновијој верзији пре скоро годину дана.

Предности:

  • Дизајниран за .НЕТ Цоре
  • Имплементиран је гранајући низ миграција
  • Имплементирано евидентирање миграције

Против:

  • Последњи пут ажурирано пре годину дана. Очигледно да пројекат није подржан
  • Не подржава Орацле (у чланку се наводи да је то због недостатка стабилне имплементације за .НЕТ Цоре - али ово је било пре годину дана)
  • Нема аутоматског генерисања миграција

Све у свему, пројекат изгледа обећавајуће, посебно ако би се развијао, али смо морали да донесемо одлуку овде и сада.

Флуент Мигратор

Поређење и избор система за миграцију података
гитхуб.цом/флуентмигратор/флуентмигратор

Најпопуларнији алат за миграцију са великом војском обожаватеља. Дистрибуирано под лиценцом Апацхе 2.0. Као што је наведено у опису, то је оквир за миграцију за .НЕТ, сличан Руби он Раилс Миграцијама. Промене у шеми базе података описане су у Ц# класама.

Овде постоје предности:

  • Подршка за потребне ДБМС
  • Подршка за .НЕТ Цоре
  • Велика развијена заједница
  • Конфликти између миграција се решавају секвенцијално — прецизира се редослед извршавања миграција. Поред тога, ако дође до сукоба око једног ентитета, приликом спајања кода, он се решава на исти начин као и у остатку кода
  • Постоје профили који се извршавају након успешне миграције. И могу да носе сервисне функције.Последње ажурирање је било пре месец дана, односно пројекат је жив

Што се тиче минуса, ево их:

  • Нема аутоматског генерисања миграција
  • Нема везе са ЕФ моделима
  • Нема снимака базе података

Шта је био наш избор?

Поређење и избор система за миграцију података

Оштре дебате су се вртеле око два параметра - аутоматског генерисања миграција и разумног решавања сукоба. Други фактори су били много мање застрашујући. Као резултат тога, на основу резултата дискусије, тим је одлучио да користи Флуент Мигратор у новом пројекту. Јер решавање конфликата у будућности донеће много више користи.

Налази

Наравно, не постоје савршени алати. Тако да смо морали да дамо приоритет нашим „жељама“ да направимо избор. Међутим, за друге тимове и друге задатке, други фактори могу бити одлучујући. Надамо се да ће вам овај чланак помоћи да направите избор.

Извор: ввв.хабр.цом

Додај коментар