{"id":34734,"date":"2019-10-31T22:00:06","date_gmt":"2019-10-31T19:00:06","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sravnenie-i-vybor-sistem-migratsii-dannyh\/"},"modified":"2019-10-31T22:00:06","modified_gmt":"2019-10-31T19:00:06","slug":"sravnenie-i-vybor-sistem-migratsii-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sravnenie-i-vybor-sistem-migratsii-dannyh","title":{"rendered":"Compararea \u0219i selectarea sistemelor de migrare a datelor","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h2>Compararea \u0219i selectarea sistemelor de migrare a datelor<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/a25cc01b8d86b233a6d21caddb169fec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nModelul de date din procesul de dezvoltare are tendin\u021ba de a se schimba, iar \u00eentr-un anumit moment acesta nu mai corespunde bazei de date. Sigur, baza de date poate fi \u0219tears\u0103, iar ORM va crea o nou\u0103 versiune care va corespunde modelului, dar o astfel de procedur\u0103 va duce la pierderea datelor existente. Astfel, func\u021bia sistemului de migrare se reduce la sincronizarea schemei cu modelul de date din aplica\u021bie f\u0103r\u0103 pierderea datelor existente.<\/p>\n<p>\u00cen cadrul acestui articol, ne propunem s\u0103 discut\u0103m diferite instrumente pentru gestionarea migra\u021biilor bazelor de date. Sper\u0103m c\u0103 aceast\u0103 prezentare va fi util\u0103 dezvoltatorilor care se confrunt\u0103 cu o astfel de alegere.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Sarcin\u0103<\/h3>\n<p>\nCompania noastr\u0103 este acum angajat\u0103 \u00eentr-o dezvoltare activ\u0103 a genera\u021biei urm\u0103toare a produsului \u2013 Docs Security Suite (DSS). Partea serverului este scris\u0103 \u00een .Net Core, iar ca SGBD este utilizat Entity Framework Core. \u00cen proiectarea aplica\u021biei, ne folosim de abordarea Code First.<\/p>\n<p>Modelul domenial al aplica\u021biei este creat de mai mul\u021bi dezvoltatori simultan \u2013 fiecare r\u0103spunz\u00e2nd de partea sa logic\u0103 a sistemului. <\/p>\n<p>\u00cen genera\u021bia anterioar\u0103 a DSS, pentru sistemul de gestionare a migra\u021biilor s-a utilizat clasicul Entity Framework Migrations (EF 6). Totu\u0219i, s-au acumulat unele nemul\u021bumiri, cea mai important\u0103 fiind c\u0103 EF nu dispune de o abordare rezonabil\u0103 pentru solu\u021bionarea conflictelor de versiuni. Acest lucru ne afecteaz\u0103 \u0219i acum \u00een cadrul bug-fixing-ului pentru suport, a\u0219a c\u0103 s-a decis s\u0103 explor\u0103m op\u021biuni alternative.<\/p>\n<p>\u00cen urma discu\u021biilor, s-au formulat urm\u0103toarele cerin\u021be pentru sistemul de gestionare a migra\u021biilor:<\/p>\n<ol>\n<li>Suport pentru diverse SGBD-uri. Neap\u0103rat MS SQL Server, PostgreSQL, Oracle, dar este posibil\u0103 utilizarea \u0219i altora.<\/li>\n<li>Lucrul cu ORM. Ini\u021bial s-a presupus utilizarea EF Core, dar \u00een etapa de proiectare erau deschi\u0219i \u0219i la alte ORM-uri.<\/li>\n<li>Generarea automat\u0103 a migra\u021biilor. Av\u00e2nd \u00een vedere dezvoltarea Code First, ne-am dori s\u0103 evit\u0103m necesitatea de a scrie manual migra\u021biile.<\/li>\n<li>Conflictele de versiuni. \u00cen condi\u021biile unei dezvolt\u0103ri distribuite, la \u00eembinarea codului, EF Core poate \u00eent\u00e2mpina probleme din cauza conflictelor. Aceasta devine o problem\u0103 semnificativ\u0103, deoarece diferite p\u0103r\u021bi ale aplica\u021biei sunt create de diferi\u021bi dezvoltatori, ceea ce duce la un consum mare de timp pentru fiecare.<\/li>\n<li>Documenta\u021bie \u0219i suport bine dezvoltate. Aici, nu credem c\u0103 sunt necesare explica\u021bii.<\/li>\n<li>Gratuity. Este un criteriu condi\u021bionat, deoarece nu am fost \u00eempotriva sistemelor care sunt foarte ieftine sau, dimpotriv\u0103, scumpe, dar confortabile, pe care am fost dispu\u0219i s\u0103 le consider\u0103m.<\/li>\n<\/ol>\n<p>\n\u00cen urma unei cercet\u0103ri minore, au fost identificate \u0219i recunoscute urm\u0103toarele op\u021biuni ca fiind dorite pentru a fi considerate:<\/p>\n<ol>\n<li>Migra\u021bii EF Core<\/li>\n<li>DBup<\/li>\n<li>RoundhousE<\/li>\n<li>ThinkingHome.Migrator<\/li>\n<li>Fluent Migrator <\/li>\n<\/ol>\n<p><\/p>\n<h3>\u0218i acum, c\u00e2teva detalii suplimentare<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/4cb242f230b19073626e36a472dcea50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/core\/managing-schemas\/migrations\/\">Migra\u021bii EntityFramework Core<\/a><\/noindex><\/b><\/p>\n<p>Desigur, acesta a fost prima \u0219i principal\u0103 op\u021biune. Un instrument nativ, care func\u021bioneaz\u0103 din cutie f\u0103r\u0103 a necesita trucuri. O mare cantitate de documenta\u021bie, oficial\u0103 \u0219i neoficial\u0103, u\u0219urin\u021b\u0103 etc. Totu\u0219i, preten\u021biile aduse clasicului EF r\u0103m\u00e2n actuale \u0219i pentru EF Core. <\/p>\n<p>Astfel, pentru EF Core, s-au eviden\u021biat avantajele:<\/p>\n<ul>\n<li>Suport Microsoft, documenta\u021bie, inclusiv \u00een limba rom\u00e2n\u0103, o comunitate uria\u0219\u0103.<\/li>\n<li>Generare automat\u0103 a migra\u021biilor pe baza CodeFirst.<\/li>\n<li>Spre deosebire de EF 6, \u00een EF Core nu se mai stocheaz\u0103 o captur\u0103 a bazei de date. C\u00e2nd se lucreaz\u0103 cu EF Core \u00een Code First, nu mai este obligatorie desf\u0103\u0219urarea bazei de date.<\/li>\n<li>Deoarece pornim de la Code First, existe posibilitatea de a avea o singur\u0103 migra\u021bie pentru to\u021bi furnizorii necesari de acces la date.<\/li>\n<li>\u00cen ceea ce prive\u0219te furnizorii \u2014 sunt sus\u021binute at\u00e2t PostgreSQL, c\u00e2t \u0219i Oracle, etc., \u0219i chiar \u2014 MS SQL Server :)<\/li>\n<\/ul>\n<p>\n \u0218i dezavantajele:<\/p>\n<ul>\n<li>Rezolvarea conflictelor a r\u0103mas la acela\u0219i nivel. Este necesar s\u0103 se stabileasc\u0103 o secven\u021b\u0103 a migra\u021biilor \u0219i s\u0103 se actualizeze capturile bazei de date.<\/li>\n<li>Dependin\u021b\u0103 de modelele pe baza c\u0103rora au fost generate migra\u021biile.<\/li>\n<\/ul>\n<p>\n<b>DbUp<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/02a47718c7b4c618c204c2273b4de50c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/dbup.github.io\/\">dbup.github.io<\/a><\/noindex><\/p>\n<p>DbUp este o bibliotec\u0103 .NET, care se instaleaz\u0103 prin NuGet \u0219i ajut\u0103 la aplicarea modific\u0103rilor pe SQL Server. Aceasta urm\u0103re\u0219te ce scripturi de modific\u0103ri au fost deja executate \u0219i ruleaz\u0103 acelea care sunt necesare pentru actualizarea bazei de date. Biblioteca a evoluat dintr-un proiect de motor de bloguri open-source pe ASP.NET \u0219i exist\u0103 sub licen\u021ba MIT, iar codul este disponibil pe GitHub. Migra\u021biile sunt descrise folosind T-SQL.<\/p>\n<p>Care sunt avantajele?<\/p>\n<ul>\n<li>Suport pentru un num\u0103r mare de SGBD-uri (MS SQL Server, PostgreSQL, MySQL).<\/li>\n<li>Deoarece scripturile sunt scrise \u00een T-SQL, acestea arat\u0103 destul de simplu.<\/li>\n<li>Conflictele sunt de asemenea rezolvate folosind SQL.<\/li>\n<\/ul>\n<p>\nIar dezavantajele:<\/p>\n<ul>\n<li>\u00cen ciuda diversit\u0103\u021bii de SGBD-uri supportate, Oracle nu face parte din acestea.<\/li>\n<li>Nu interac\u021bioneaz\u0103 cu ORM.<\/li>\n<li>Scrierea scripturilor \u00een T-SQL pe \u201ebazele de m\u00e2ini\u201d \u2013 nu este ceea ce ne-am dorit. <\/li>\n<li>Documenta\u021bia \u0219i comunitatea sunt destul de slabe, de\u0219i \u00een contextul scrierii scripturilor SQL, poate c\u0103 nu sunt necesare.<\/li>\n<\/ul>\n<p>\n<b>RoundhousE<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/ca418187d64e75830b2643dea794c6d0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/chucknorris\/roundhouse\">github.com\/chucknorris\/roundhouse<\/a><\/noindex><\/p>\n<p>Acest instrument de gestionare a migra\u021biilor, distribuit sub licen\u021ba Apache 2.0, precum \u0219i precedentul, func\u021bioneaz\u0103 pe motorul de migra\u021bii T-SQL. Se pare c\u0103 dezvoltatorii s-au concentrat pe solu\u021bionarea problemelor tehnice legate de suportul pentru SGBD, mai degrab\u0103 dec\u00e2t pe crearea unui proces de dezvoltare confortabil.<\/p>\n<p>Pro:<\/p>\n<ul>\n<li>Suport\u0103 SGBD-urile necesare (inclusiv Oracle)<\/li>\n<\/ul>\n<p>\nDezavantaje:<\/p>\n<ul>\n<li>Oracle (precum \u0219i Access, care nu este relevant pentru noi) nu este suportat pe .NET Core, doar pe .NET Full Framework<\/li>\n<li>Nu func\u021bioneaz\u0103 cu ORM<\/li>\n<li>Documenta\u021bia este \u0219i mai pu\u021bin\u0103 dec\u00e2t la instrumentul precedent<\/li>\n<li>Din nou - migra\u021biile sunt scrise \u00een scripturi<\/li>\n<\/ul>\n<p>\n<b>ThinkingHome.Migrator<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/c530e23f8c9c27ed1d53f3dce710eb70.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInstrument pentru migrarea versiunii schemei bazei de date pe platforma .NET Core, distribuit sub licen\u021ba MIT. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/414867\/\">Dezvoltatorul a scris despre ultima sa versiune acum aproape un an<\/a><\/noindex>. <\/p>\n<p>Pro:<\/p>\n<ul>\n<li>Proiectat pentru .NET Core<\/li>\n<li>A fost implementat\u0103 o secven\u021b\u0103 bran\u0219at\u0103 de migra\u021bii<\/li>\n<li>A fost implementat un sistem de jurnalizare a migra\u021biilor<\/li>\n<\/ul>\n<p>\nDezavantaje:<\/p>\n<ul>\n<li>Ultima actualizare a fost acum un an. Se pare c\u0103 proiectul nu mai este sus\u021binut<\/li>\n<li>Nu suport\u0103 Oracle (\u00een articol se men\u021bioneaz\u0103 c\u0103 acest lucru se datoreaz\u0103 lipsei unei implement\u0103ri stabile pentru .NET Core - dar asta a fost acum un an)<\/li>\n<li>Lipse\u0219te generarea automat\u0103 a migra\u021biilor<\/li>\n<\/ul>\n<p>\n\u00cen general, proiectul pare promi\u021b\u0103tor, \u00een special dac\u0103 ar fi evoluat, dar ne-am v\u0103rsat s\u0103 lu\u0103m o decizie aici \u0219i acum.<\/p>\n<p><b>Fluent Migrator<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/def2f7b9ecd8084975add75ded1a7a71.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fluentmigrator\/fluentmigrator\">github.com\/fluentmigrator\/fluentmigrator<\/a><\/noindex><\/p>\n<p>Cel mai popular instrument de migrare, av\u00e2nd o mare armat\u0103 de fani. Este distribuit sub licen\u021ba Apache 2.0. A\u0219a cum este indicat \u00een descriere, este o platform\u0103 de migrare pentru .NET, similar\u0103 cu Ruby on Rails Migrations. Modific\u0103rile schemei Bazei de Date sunt descrise \u00een clase scrise \u00een C#.<\/p>\n<p>Aici sunt avantaje:<\/p>\n<ul>\n<li>Suport pentru SGBD-urile necesare<\/li>\n<li>Suport pentru .NET Core<\/li>\n<li>O comunitate mare \u0219i dezvoltat\u0103<\/li>\n<li>Conflictele migra\u021biilor sunt rezolvate \u00een mod secven\u021bial - migra\u021biile au un ordonare de realizare specificat\u0103. \u00cen plus, dac\u0103 apare un conflict \u00een jurul unei entit\u0103\u021bi, solu\u021bionarea \u00een merge-ul codului este realizat\u0103 la fel ca \u00een restul codului<\/li>\n<li>Exist\u0103 profile care se execut\u0103 dup\u0103 succesul migra\u021biei. \u0218i pot purta func\u021bii de serviciu. Ultima actualizare a fost acum o lun\u0103, a\u0219adar proiectul este activ.<\/li>\n<\/ul>\n<p>\nC\u00e2t despre dezavantaje, acestea sunt:<\/p>\n<ul>\n<li>Lipse\u0219te generarea automat\u0103 a migra\u021biilor<\/li>\n<li>Lipse\u0219te leg\u0103tura cu modelele EF<\/li>\n<li>Nu exist\u0103 snapshot-uri pentru baza de date<\/li>\n<\/ul>\n<p><\/p>\n<h3>Care a fost alegerea noastr\u0103?<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Compararea \u0219i selectarea sistemelor de migrare a datelor\" src=\"\/wp-content\/uploads\/2019\/05\/db6953bf80bbbf9f560e39b32c32752c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCele mai aprinse discu\u021bii s-au concentrat \u00een jurul a dou\u0103 parametrii \u2013 generarea automat\u0103 a migra\u021biilor \u0219i solu\u021bionarea conflictelor. Alte factori p\u0103reau mult mai pu\u021bin alarman\u021bi. \u00cen cele din urm\u0103, echipa a decis s\u0103 foloseasc\u0103 Fluent Migrator \u00een noul proiect. Deoarece solu\u021bionarea conflictelor pe termen lung va aduce mult mai multe beneficii.<\/p>\n<h4>Conclusions<\/h4>\n<p>\nDesigur, nu exist\u0103 instrumente perfecte. De aceea, a trebuit s\u0103 stabilim priorit\u0103\u021bi \u00een \u201edorin\u021bele\u201d noastre. Totu\u0219i, pentru alte echipe \u0219i alte sarcini, al\u021bi factori pot fi decisivi. Sper\u0103m ca acest articol s\u0103 v\u0103 ajute s\u0103 face\u021bi o alegere.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/crosstech\/blog\/453930\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0411\u0414 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u0438 \u0442\u043e\u0433\u0434\u0430 ORM \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u043e\u0442\u0435\u0440\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26172,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 .\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sravnenie-i-vybor-sistem-migratsii-dannyh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 .\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sravnenie-i-vybor-sistem-migratsii-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:06+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:06+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Compara\u021bia \u0219i alegerea sistemelor de migrare a datelor | ProHoster","description":"Compara\u021bia \u0219i alegerea sistemelor de migrare a datelor.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sravnenie-i-vybor-sistem-migratsii-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 .","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sravnenie-i-vybor-sistem-migratsii-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:06+00:00","article:modified_time":"2019-10-31T19:00:06+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34734","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:26:53","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:16:32","updated":"2026-01-21 20:26:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/34734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=34734"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/34734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/26172"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=34734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=34734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=34734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}