Муқоиса ва интихоби системаҳои интиқоли маълумот

Муқоиса ва интихоби системаҳои интиқоли маълумот

Муқоиса ва интихоби системаҳои интиқоли маълумот

Модели додаҳо дар ҷараёни таҳия тамоюли тағирёбанда дорад ва дар баъзе мавридҳо он дигар ба пойгоҳи додаҳо мувофиқат намекунад. Албатта, базаи маълумотро нест кардан мумкин аст ва он гоҳ ORM версияи наверо эҷод мекунад, ки ба модел мувофиқат мекунад, аммо ин тартиб боиси гум шудани маълумоти мавҷуда мегардад. Ҳамин тариқ, вазифаи системаи муҳоҷират аз он иборат аст, ки дар натиҷаи тағир додани схема, он бо модели додаҳо дар барнома бидуни гум кардани маълумоти мавҷуда ҳамоҳанг карда мешавад.

Дар ин мақола мо мехоҳем асбобҳои гуногунро барои идоракунии муҳоҷирати пойгоҳи додаҳо баррасӣ кунем. Умедворем, ки ин барраси барои таҳиягароне, ки бо интихоби шабеҳ дучор меоянд, муфид хоҳад буд.

Мақсад

Ширкати мо дар айни замон насли нави маҳсулот - Docs Security Suite (DSS) -ро фаъолона таҳия мекунад. Қисми сервер дар .Net Core навишта шудааст ва Entity Framework Core ҳамчун DBMS истифода мешавад. Ҳангоми тарҳрезии барнома мо равиши Code First-ро истифода мебарем.

Модели домени барнома аз ҷониби якчанд таҳиягарон дар як вақт эҷод карда мешавад - ҳар яке барои қисми мантиқии система масъул аст.

Насли қаблии DSS ҳамчун системаи идоракунии муҳоҷирати классикии Entity Framework Migrations (EF 6) истифода мешуд. Бо вуҷуди ин, баъзе шикоятҳо бар зидди он ҷамъ омадаанд, шикояти асосӣ дар он аст, ки EF барои ҳалли ихтилофоти версия муносибати оқилона надорад. Ин далел то ҳол моро ҳангоми ислоҳи хатогиҳо ҳамчун як қисми дастгирӣ хафа мекунад, аз ин рӯ мо тасмим гирифтем, ки имконоти алтернативӣ баррасӣ кунем.

Дар натиљаи муњокима талаботњои зерин ба низоми идоракунии муњољират ташаккул ёфтанд:

  1. Дастгирии DBMS-ҳои гуногун. MS SQL Server, PostgreSQL, Oracle талаб карда мешавад, аммо эҳтимолияти истифодаи дигарон имконпазир аст
  2. Кор бо ORM. Дар аввал, истифодаи EF Core ба нақша гирифта шуда буд, аммо дар марҳилаи тарҳрезӣ мо омода будем, ки дигар ORMҳоро баррасӣ кунем
  3. Тавлиди худкори муҳоҷират. Бо дарназардошти таҳияи Code First, ман мехоҳам аз зарурати “дастнависӣ” муҳоҷират канорагирӣ кунам
  4. Муноқишаҳои версия. Дар муҳити тақсимшудаи рушд, ҳангоми якҷояшавӣ, EF Core метавонад аз низоъҳо азоб кашад. Ин як мушкили ҷиддӣ мегардад, зеро қисмҳои гуногуни барнома аз ҷониби таҳиягарони гуногун сохта шудаанд, бинобар ин шумо бояд барои ҳар як вақти зиёд сарф кунед.
  5. Ҳуҷҷатҳои пешрафта ва дастгирии. Дар ин чо, ба назари мо чунин менамояд, ки ба шарх додан лозим нест
  6. Озод. Меъёр шартӣ аст, зеро системаҳо на он қадар гарон ё гарон ҳастанд, аммо барои роҳат идеалӣ мебошанд, мо низ омода будем, ки онро баррасӣ кунем

Дар натиҷаи тадқиқоти каме, вариантҳои зерин пайдо шуданд ва барои баррасӣ матлуб дониста шуданд:

  1. Муҳоҷирати асосии EF
  2. DBup
  3. Хонаи мудавварЕ
  4. ThinkingHome.Migrator
  5. Муҳоҷири озод

Ва ҳоло каме тафсилоти бештар

Муқоиса ва интихоби системаҳои интиқоли маълумот
Муҳоҷирати асосии EntityFramework

Табиист, ки ин аввалин ва асосии интихоб буд. Асбоби ватанӣ, ки аз қуттӣ бе ягон скрипка бо танбур кор мекунад. Миқдори зиёди ҳуҷҷатҳо, расмӣ ва на он қадар, соддагӣ ва ғайра. Бо вуҷуди ин, шикоятҳо дар бораи EF классикӣ барои EF Core низ хеле мувофиқанд.

Ҳамин тариқ, бартариҳои EF Core таъкид шудаанд:

  • Дастгирии Microsoft, ҳуҷҷатҳо, аз ҷумла ба забони русӣ, ҷомеаи бузург
  • Тавлиди худкори муҳоҷират дар асоси CodeFirst
  • Дар муқоиса бо EF 6, EF Core дигар акси пойгоҳи додаҳоро нигоҳ намедорад. Ҳангоми кор бо EF Core дар Code First, дигар ҷойгиркунии пойгоҳи додаҳо лозим нест
  • Азбаски мо аз Code First рақс мекунем, имкон дорад, ки як муҳоҷирро ба ҳамаи провайдерҳои дастрасии маълумот талаб кунем
  • Дар робита ба провайдерҳо, PostgreSQL дастгирӣ карда мешавад, Oracle дастгирӣ карда мешавад ва ғайра ва ғайра ва ҳатто MS SQL Server 

Ва инчунин камбудиҳо:

  • Ҳалли низоъ дар як сатҳ боқӣ монд. Муҳоҷиратро пайдарпай кардан ва аксҳои базаи маълумотро навсозӣ кардан лозим аст
  • Вобастагӣ аз моделҳое, ки дар онҳо муҳоҷират тавлид мешавад

DbUp

Муқоиса ва интихоби системаҳои интиқоли маълумот
dbup.github.io

DbUp китобхонаи .NET аст, ки аз ҷониби NuGet насб карда шудааст ва барои тағир додани тағирот ба SQL Server кӯмак мекунад. Он пайгирӣ мекунад, ки кадом скриптҳои тағирот аллакай иҷро шудаанд ва онҳоеро, ки барои навсозии пойгоҳи додаҳо заруранд, иҷро мекунад. Китобхона аз лоиҳаи як муҳаррики блогнависии кушодаасос дар ASP.NET ба вуҷуд омадааст ва таҳти иҷозатномаи MIT мавҷуд аст ва рамз дар GitHub аст. Муҳоҷират бо истифода аз T-SQL тавсиф карда мешавад.

Афзалиятҳо кадомҳоянд:

  • Дастгирии шумораи зиёди DBMS (MS SQL Server, PstgreSQL, MySQL)
  • Азбаски скриптҳо дар T-SQL навишта шудаанд, онҳо хеле содда ба назар мерасанд
  • Ихтилофҳо инчунин бо истифода аз SQL ҳал карда мешаванд

Ва манфии:

  • Бо тамоми гуногунии DBMS-ҳои дастгирӣшаванда, Oracle яке аз онҳо нест
  • Бо ORM ҳамкорӣ намекунад
  • Навиштани скриптҳои T-SQL бо дастӣ он чизе нест, ки мо ҳадаф доштем
  • Ҳуҷҷатҳо ва ҷомеа чунинанд, гарчанде ки дар робита ба навиштани скриптҳои SQL онҳо лозим нестанд.

Хонаи мудавварЕ

Муқоиса ва интихоби системаҳои интиқоли маълумот
github.com/chucknorris/roundhouse

Ин абзори идоракунии муҳоҷират, ки таҳти литсензияи Apache 2.0 паҳн шудааст, мисли пештара, дар муҳаррики муҳоҷирати T-SQL кор мекунад. Эҳтимол, таҳиягарон ба ҷои эҷоди раванди бароҳати рушд, ба ҳалли мушкилоти техникӣ аз нуқтаи назари дастгирии DBMS афзалият доданд.

Тарафдор:

  • DBMS-и заруриро дастгирӣ мекунад (аз ҷумла Oracle)

Эзоҳ:

  • Oracle (инчунин Access, ки барои мо номувофиқ аст) дар .NET Core дастгирӣ намешавад, танҳо дар .NET Full Framework
  • Бо ORM кор намекунад
  • Ҳуҷҷатҳо нисбат ба асбоби қаблӣ ҳатто камтаранд
  • Боз - муҳоҷиратҳо бо скриптҳо навишта мешаванд

ThinkingHome.Migrator

Муқоиса ва интихоби системаҳои интиқоли маълумот

Восита барои интиқоли схемаи версияи пойгоҳи додаҳо ба платформаи .NET Core, ки таҳти иҷозатномаи MIT паҳн шудааст. Худи таҳиякунанда дар бораи версияи охирини он тақрибан як сол пеш навишта буд.

Тарафдор:

  • Барои .NET Core тарҳрезӣ шудааст
  • Пайдарпайии шохабандии муҳоҷиратро амалӣ намуд
  • Бақайдгирии муҳоҷират амалӣ карда шуд

Эзоҳ:

  • Охирин навсозӣ як сол пеш. Эҳтимол, лоиҳа дастгирӣ намешавад
  • Аз ҷониби Oracle дастгирӣ намешавад (дар мақола гуфта мешавад, ки ин бо сабаби набудани татбиқи устувор барои .NET Core аст - аммо ин як сол пеш аст)
  • Насли автоматии муҳоҷират вуҷуд надорад

Умуман, лоиҳа умедбахш ба назар мерасад, хусусан агар он рушд мекард, аммо мо бояд дар ин ҷо ва ҳоло қарор қабул кунем.

Муҳоҷири озод

Муқоиса ва интихоби системаҳои интиқоли маълумот
github.com/fluentmigrator/fluentmigrator

Воситаи маъмултарини муҳоҷират бо артиши зиёди мухлисон. Дар доираи иҷозатномаи Apache 2.0 паҳн карда шудааст. Тавре ки дар тавсиф гуфта шудааст, он чаҳорчӯбаи муҳоҷират барои .NET мебошад, ки ба Ruby on Rails Migrations монанд аст. Тағирот ба схемаи пойгоҳи додаҳо дар синфҳои C# тасвир шудааст.

Дар ин ҷо афзалиятҳо мавҷуданд:

  • Дастгирии DBMS лозим аст
  • Дастгирии .NET Core
  • Ҷамъияти бузурги пешрафта
  • Ихтилофхои байни мухочират пай дар пай хал карда мешаванд — тартиби ичрои мухочират муайян карда мешавад. Илова бар ин, агар ихтилоф дар атрофи як объект ба миён ояд, ҳангоми якҷоя кардани код, он ҳамон тавре ки дар қисми боқимондаи код ҳал карда мешавад.
  • Профилҳое ҳастанд, ки пас аз муҳоҷирати муваффақ иҷро карда мешаванд. Ва онҳо метавонанд вазифаҳои хидматрасониро иҷро кунанд.. Навсозии охирин як моҳ пеш буд, яъне лоиҳа зинда аст

Дар мавриди минусҳо, инҳоянд:

  • Насли автоматии муҳоҷират вуҷуд надорад
  • Бо моделҳои EF пайваст нест
  • Ягон аксҳои пойгоҳи додаҳо

Интихоби мо чӣ буд?

Муқоиса ва интихоби системаҳои интиқоли маълумот

Баҳси тунд дар атрофи ду параметр - тавлиди автоматии муҳоҷират ва ҳалли оқилонаи низоъҳо сурат гирифт. Дигар омилҳо хеле камтар тарсонданд. Дар натиҷа, дар асоси натиҷаҳои муҳокима даста тасмим гирифт, ки дар лоиҳаи нав аз Fluent Migrator истифода кунад. Зеро рафъи ихтилофот дар оянда фоидаи бештар меорад.

натиҷаҳои

Албатта, асбобҳои комил вуҷуд надоранд. Аз ин рӯ, мо маҷбур шудем, ки "хоҳишҳо" -и худро барои интихоби худ афзалият диҳем. Аммо, барои дигар дастаҳо ва дигар вазифаҳо омилҳои дигар метавонанд ҳалкунанда бошанд. Мо умедворем, ки ин мақола ба шумо дар интихоби интихоб кӯмак хоҳад кард.

Манбаъ: will.com

Илова Эзоҳ