{"id":92015,"date":"2020-08-21T19:42:13","date_gmt":"2020-08-21T17:42:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh"},"modified":"2020-08-21T19:42:13","modified_gmt":"2020-08-21T17:42:13","slug":"obzor-gibkih-metodologij-proektirovaniya-dwh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","title":{"rendered":"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dezvoltarea unui depozit este o activitate de durat\u0103 \u0219i serioas\u0103. <\/p>\n<p>Multe \u00een via\u021ba unui proiect depind de c\u00e2t de bine este g\u00e2ndit\u0103 modelul obiectual \u0219i structura bazei de date de la \u00eenceput.<\/p>\n<p>Abordarea standard a fost \u0219i r\u0103m\u00e2ne diverse variante de combinare a schemei \u201estea\u201d cu a treia form\u0103 normalizat\u0103. De obicei, conform principiului: datele surs\u0103 \u2014 3NF, vitrinele \u2014 stea. Aceast\u0103 abordare, testat\u0103 de timp \u0219i sus\u021binut\u0103 de un num\u0103r mare de studii \u2014 este prima (\u0219i uneori singura) idee care \u00eei vine \u00een minte unui specialist \u00een DWH atunci c\u00e2nd se g\u00e2nde\u0219te la cum ar trebui s\u0103 arate un depozit analitic.<\/p>\n<p>Pe de alt\u0103 parte, afacerea \u00een general \u0219i cerin\u021bele clientului \u00een particular au tendin\u021ba de a se schimba rapid, iar datele \u2014 de a cre\u0219te at\u00e2t \u201e\u00een ad\u00e2ncime\u201d, c\u00e2t \u0219i \u201e\u00een l\u0103\u021bime\u201d. Aici apare principalul dezavantaj al stelei \u2014 limit\u0103rile. <b>flexibilitate<\/b>.<\/p>\n<p>\u0218i dac\u0103 \u00een via\u021ba dumneavoastr\u0103 lini\u0219tit\u0103 \u0219i confortabil\u0103 de dezvoltator DWH a ap\u0103rut brusc:<\/p>\n<ul>\n<li>sarcina de a \u201eface rapid ceva, iar apoi vom vedea\u201d;<\/li>\n<li>a ap\u0103rut un proiect \u00een expansiune rapid\u0103, cu conectarea de noi surse \u0219i reconfigurarea modelului de afaceri de cel pu\u021bin o dat\u0103 pe s\u0103pt\u0103m\u00e2n\u0103;<\/li>\n<li>a ap\u0103rut un client care nu \u00ee\u0219i imagineaz\u0103 cum ar trebui s\u0103 arate sistemul \u0219i ce func\u021bii s\u0103 \u00eendeplineasc\u0103 \u00een cele din urm\u0103, dar este deschis la experimente \u0219i ajust\u0103ri constante ale rezultatelor dorite pe parcurs;<\/li>\n<li>a intrat un manager de proiect cu ve\u0219ti bune: \u201e\u0218i acum avem Agile!\u201d.<\/li>\n<\/ul>\n<p>\nSau dac\u0103 pur \u0219i simplu sunte\u021bi curios s\u0103 afla\u021bi cum se pot construi depozite \u00een alte moduri \u2014 v\u0103 invit s\u0103 citi\u021bi mai departe!<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/59cd70ca3af4841d0c5c9bfbbd7636a3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Ce \u00eenseamn\u0103 \u201eflexibilitate\u201d<\/h3>\n<p>\nPentru \u00eenceput, s\u0103 ne stabilim ce propriet\u0103\u021bi ar trebui s\u0103 aib\u0103 un sistem pentru a putea fi numit \u201eflexibil\u201d. <\/p>\n<p>Merit\u0103 men\u021bionat c\u0103 propriet\u0103\u021bile descrise ar trebui s\u0103 se refere exact la <b>sistemul<\/b>, nu la <b>procesul <\/b>dezvolt\u0103rii sale. A\u0219adar, dac\u0103 a\u021bi dorit s\u0103 citi\u021bi despre Agile ca metodologie de dezvoltare, este mai bine s\u0103 consulta\u021bi alte articole. De exemplu, pe Habr exist\u0103 multe materiale interesante (at\u00e2t <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/436178\/\">recenziile noastre<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/284012\/\">pragmatice<\/a><\/noindex>, sau <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataart\/blog\/245605\/\">problematici<\/a><\/noindex>).<\/p>\n<p>Acesta nu \u00eenseamn\u0103 c\u0103 procesul de dezvoltare \u0219i structura HD nu sunt deloc interconectate. \u00cen general, dezvoltarea unui depozit de date cu o arhitectur\u0103 flexibil\u0103 ar trebui s\u0103 fie considerabil mai u\u0219oar\u0103 \u00een cadrul Agile. Cu toate acestea, \u00een practic\u0103, op\u021biunile pentru dezvoltarea unui DWH clasic conform lui Kimball \u0219i DataVault prin waterfall sunt \u00eent\u00e2lnite mult mai des dec\u00e2t coinciden\u021bele fericite ale flexibilit\u0103\u021bii \u00een cele dou\u0103 sale forme pe acela\u0219i proiect.<\/p>\n<p>A\u0219adar, ce capacit\u0103\u021bi ar trebui s\u0103 aib\u0103 un depozit flexibil? Pot fi eviden\u021biate trei puncte:<\/p>\n<ol>\n<li><b>Livrare timpurie \u0219i \u00eembun\u0103t\u0103\u021biri rapide<\/b> \u2014 aceasta \u00eenseamn\u0103 c\u0103, \u00een ideal, primul rezultat de afaceri (de exemplu, primele rapoarte func\u021bionale) ar trebui s\u0103 fie ob\u021binut c\u00e2t mai repede, adic\u0103 \u00eenainte de a fi proiectat \u0219i implementat sistemul \u00een \u00eentregime. Fiecare \u00eembun\u0103t\u0103\u021bire ulterioar\u0103 ar trebui, de asemenea, s\u0103 necesite c\u00e2t mai pu\u021bin timp posibil.<\/li>\n<li><b>\u00cembun\u0103t\u0103\u021bire iterativ\u0103<\/b> \u2014 aceasta \u00eenseamn\u0103 c\u0103 fiecare \u00eembun\u0103t\u0103\u021bire ulterioar\u0103, \u00een ideal, nu ar trebui s\u0103 afecteze func\u021bionalitatea deja existent\u0103. Acest aspect devine adesea cel mai mare co\u0219mar \u00een proiectele mari \u2014 mai devreme sau mai t\u00e2rziu, anumite obiecte \u00eencep s\u0103 se umple cu at\u00e2t de multe leg\u0103turi, \u00eenc\u00e2t devine mai simplu s\u0103 repe\u021bi complet logica \u00eentr-o copie al\u0103turi dec\u00e2t s\u0103 adaugi un c\u00e2mp \u00een tabelul existent. \u0218i dac\u0103 e\u0219ti surprins c\u0103 analiza impactului unei modific\u0103ri asupra obiectelor existente poate necesita mai mult timp dec\u00e2t modificarea \u00eens\u0103\u0219i \u2014 probabil c\u0103 nu ai lucrat \u00eenc\u0103 cu HD-uri mari \u00een domeniile bancar sau telecom.<\/li>\n<li><b>Adaptare constant\u0103 la cerin\u021bele de afaceri \u00een schimbare<\/b> \u2014 structura general\u0103 a obiectelor ar trebui s\u0103 fie proiectat\u0103 nu doar av\u00e2nd \u00een vedere posibilitatea extinderii, ci \u0219i cu g\u00e2ndul la faptul c\u0103 direc\u021bia acestei extensii nici m\u0103car nu \u021bi-ar fi putut trece prin minte \u00een etapa de proiectare.<\/li>\n<\/ol>\n<p>\n\u0218i da, respectarea tuturor acestor cerin\u021be \u00eentr-un singur sistem este posibil\u0103 (evident, \u00een anumite cazuri \u0219i cu anumite preciz\u0103ri).<\/p>\n<p>Mai jos voi analiza dou\u0103 dintre cele mai populare metodologii de proiectare flexibil\u0103 pentru HD-uri \u2014 <b>Modelul Anchor<\/b> \u0219i <b>Data Vault<\/b>. \u00cen afara parantezelor r\u0103m\u00e2n acele tehnici minunate, precum EAV, 6NF (\u00een forma sa pur\u0103) \u0219i tot ceea ce \u021bine de solu\u021biile NoSQL \u2014 nu pentru c\u0103 acestea ar fi inferioare, \u0219i nici pentru c\u0103 altfel articolul ar fi devenit similar cu un studiu mediu. Pur \u0219i simplu, toate acestea se refer\u0103 la solu\u021bii dintr-o clas\u0103 u\u0219or diferit\u0103 \u2014 fie la tehnici pe care le pute\u021bi aplica \u00een cazuri specifice, indiferent de arhitectura general\u0103 a proiectului dumneavoastr\u0103 (precum EAV), fie la paradigme complet diferite de stocare a informa\u021biilor (precum, de exemplu, bazele de date grafice \u0219i alte variante NoSQL).<\/p>\n<h3>Problemele abord\u0103rii \u201eclasice\u201d \u0219i solu\u021biile acestora \u00een metodologiile flexibile<\/h3>\n<p>\n<i>Prin \u201eabordarea clasic\u0103\u201d m\u0103 refer la vechea stea bun\u0103 (indiferent de implementarea specific\u0103 a straturilor de baz\u0103, s\u0103 m\u0103 ierte adep\u021bii lui Kimball, Inmon \u0219i CDM).<br \/>\n<\/i><\/p>\n<h4>1. Cardinalitatea strict\u0103 a rela\u021biilor<\/h4>\n<p>\nModelul se bazeaz\u0103 pe o separare clar\u0103 a datelor \u00een <b>dimensiuni (Dimension)<\/b> \u0219i <b>fapte (Fact)<\/b>. \u0218i, Dumnezeule, este logic \u2014 deoarece analiza datelor, \u00een cea mai mare parte a cazurilor, se reduce exact la analiza unor indicatori numerici specifici (fapte) \u00een anumite dimensiuni (dimensiuni).<\/p>\n<p>\u00cen acela\u0219i timp, rela\u021biile \u00eentre obiecte sunt stabilite sub form\u0103 de leg\u0103turi \u00eentre tabele prin chei externe. Acest lucru pare destul de natural, dar conduce imediat la prima limitare a flexibilit\u0103\u021bii \u2014 <b>definirea rigid\u0103 a cardinalit\u0103\u021bii rela\u021biilor<\/b>.<\/p>\n<p>Aceasta \u00eenseamn\u0103 c\u0103 \u00een etapa de proiectare a tabelelor trebuie s\u0103 stabili\u021bi cu exactitate pentru fiecare pereche de obiecte legate dac\u0103 acestea pot fi considerate ca fiind multe-la-multe sau doar 1-la-multe, \u0219i \u201e\u00een ce direc\u021bie\u201d. De acest lucru depinde direct \u00een care dintre tabele va fi cheia primar\u0103 \u0219i \u00een care \u2014 extern\u0103. Schimbarea acestei rela\u021bii la primirea unor cerin\u021be noi va duce, cu mare probabilitate, la reproiectarea bazei de date.<\/p>\n<p>De exemplu, proiect\u00e2nd obiectul \u201ebon fiscal\u201d, v-a\u021bi bazat pe asigur\u0103rile fermec\u0103toare ale departamentului de v\u00e2nz\u0103ri, \u00eencep\u00e2nd de la premisa c\u0103 va exista posibilitatea ca <b>o singur\u0103 promo\u021bie s\u0103 se aplice la mai multe pozi\u021bii de bon<\/b> (dar nu invers):<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/15226cb79c30364d94147383ba36a8fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u0218i dup\u0103 ceva timp, colegii au introdus o nou\u0103 strategie de marketing \u00een care aceea\u0219i pozi\u021bie poate beneficia de <b>mai multe promo\u021bii simultan<\/b>. \u0218i acum trebuie s\u0103 modifica\u021bi tabelele, dedic\u00e2nd leg\u0103tura unui obiect separat. <\/p>\n<p>(Toate obiectele derivate, \u00een care se face join pe promovare, au nevoie \u0219i ele de ajust\u0103ri).<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/3c4d84a31088660257d74c4c703071e0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Rela\u021bii \u00een Data Vault \u0219i Modelul Ancor\u0103<\/b><\/p>\n<p>Evitarea unei astfel de situa\u021bii s-a dovedit a fi destul de simpl\u0103: nu trebuie s\u0103 ai \u00eencredere \u00een departamentul de v\u00e2nz\u0103ri, pentru asta este suficient <b>s\u0103 stochezi toate rela\u021biile \u00een tabele separate de la bun \u00eenceput<\/b> \u0219i s\u0103 le procesezi ca multe-la-multe. <\/p>\n<p>Aceast\u0103 abordare a fost propus\u0103 <b>de Dan Linstedt<\/b> ca parte a paradigmei <b>Data Vault<\/b> \u0219i sus\u021binut\u0103 pe deplin <b>de Lars R\u00f6nnb\u00e4ck<\/b> \u00een <b>Modelul Ancor\u0103<\/b>.<\/p>\n<p>\u00cen cele din urm\u0103, ajungem la prima caracteristic\u0103 distinctiv\u0103 a metodologiilor flexibile:<\/p>\n<blockquote><p>Rela\u021biile dintre obiecte nu sunt stocate \u00een atributele entit\u0103\u021bilor p\u0103rinte, ci reprezint\u0103 un tip separat de obiecte.<\/p><\/blockquote>\n<p>\u00cen <b>Data Vault<\/b> Aceste tabele de leg\u0103tur\u0103 sunt numite <b>Link<\/b>, iar \u00een <b>Modelul Ancor\u0103<\/b> \u2014 <b>Tie<\/b>. La prima vedere, ele sunt foarte asem\u0103n\u0103toare, de\u0219i diferen\u021bele lor nu se limiteaz\u0103 doar la denumire (despre ce va fi discutat mai jos). \u00cen ambele arhitecturi, tabelele de leg\u0103tur\u0103 pot lega <b>orice num\u0103r de entit\u0103\u021bi<\/b> (nu neap\u0103rat 2).<\/p>\n<p>Aceast\u0103 redundan\u021b\u0103, la prima vedere, ofer\u0103 o flexibilitate semnificativ\u0103 \u00een ajust\u0103ri. Aceast\u0103 structur\u0103 devine tolerant\u0103 nu doar la schimb\u0103rile cardinalit\u0103\u021bilor rela\u021biilor existente, ci \u0219i la ad\u0103ugarea de noi \u2014 dac\u0103 acum, pentru o pozi\u021bie de chitan\u021b\u0103, apare \u0219i o leg\u0103tur\u0103 cu casierul care a \u00eenregistrat-o, apari\u021bia unei astfel de leg\u0103turi devine pur \u0219i simplu o extensie peste tabelele existente, f\u0103r\u0103 a afecta orice obiecte sau procese existente.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/6a3b942a6e5d04dcbe2ff0881ebdf1bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>2. Duplicarea datelor<\/h4>\n<p>\nA doua problem\u0103 rezolvat\u0103 de arhitecturile flexibile este mai pu\u021bin evident\u0103 \u0219i este specific\u0103 \u00een primul r\u00e2nd <b>m\u0103sur\u0103torilor de tip SCD2<\/b> (m\u0103sur\u0103tori care se schimb\u0103 lent de tipul doi), de\u0219i nu numai lor.<\/p>\n<p>\u00centr-un depozit clasic, o m\u0103sur\u0103toare reprezint\u0103 de obicei un tabel care con\u021bine o cheie de tip surrogat (ca PK) \u0219i un set de chei de afaceri \u0219i atribute \u00een coloane separate. <\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/059dd47b2302b58c19a0144061b78cb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDac\u0103 m\u0103sur\u0103toarea suport\u0103 versiuni, la setul standard de c\u00e2mpuri se adaug\u0103 limitele temporale ale valabilit\u0103\u021bii versiunii, iar \u00een surs\u0103 apare mai multe versiuni pe o singur\u0103 linie \u00een depozit (c\u00e2te una pentru fiecare schimbare a atributelor versiunii).<\/p>\n<p>Dac\u0103 o dimensiune con\u021bine m\u0103car un atribut versatil care se schimb\u0103 frecvent, num\u0103rul versiunilor acestei dimensiuni va fi considerabil (chiar dac\u0103 celelalte atributuri nu sunt versiunare sau nu se schimb\u0103 niciodat\u0103), iar dac\u0103 exist\u0103 mai multe astfel de atribute, num\u0103rul versiunilor poate cre\u0219te exponen\u021bial \u00een func\u021bie de num\u0103rul acestora. O astfel de dimensiune poate ocupa un spa\u021biu de stocare semnificativ, chiar dac\u0103 cea mai mare parte a datelor stocate sunt pur \u0219i simplu duplicate ale valorilor atributelor nemodificate din alte r\u00e2nduri.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/f3d5a4fd83a5ef36355961302173791d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe asemenea, foarte des se aplic\u0103 \u0219i <b>denormalizarea<\/b> \u2014 o parte din atribute este stocat\u0103 inten\u021bionat ca valoare, \u0219i nu ca referin\u021b\u0103 la un dic\u021bionar sau alte dimensiuni. Aceast\u0103 abordare accelereaz\u0103 accesul la date, reduc\u00e2nd num\u0103rul joint-urilor atunci c\u00e2nd se acceseaz\u0103 dimensiunea.<\/p>\n<p>De regul\u0103, acest lucru duce la faptul c\u0103 <b>aceea\u0219i informa\u021bie este stocat\u0103 simultan \u00een mai multe locuri<\/b>. De exemplu, informa\u021biile despre regiunea de re\u0219edin\u021b\u0103 \u0219i apartenen\u021ba la categoria clientului pot fi stocate simultan \u00een dimensiunile \u201eClient\u201d \u0219i \u00een faptele \u201eAchizi\u021bie\u201d, \u201eLivrare\u201d \u0219i \u201eApeluri la call center\u201d, precum \u0219i \u00een tabelul de leg\u0103tur\u0103 \u201eClient \u2014 Manager de clien\u021bi\u201d.<\/p>\n<p>\u00cen general, cele descrise mai sus se aplic\u0103 \u0219i dimensiunilor obi\u0219nuite (non-versionate), dar \u00een cazul dimensiunilor versionate pot avea o alt\u0103 amploare: apari\u021bia unei noi versiuni a unui obiect (\u00een special retroactiv) nu duce doar la actualizarea tuturor tabelelor asociate, ci la apari\u021bia \u00een cascad\u0103 a noilor versiuni ale obiectelor asociate \u2014 atunci c\u00e2nd Tabelul 1 este folosit pentru construirea Tabelului 2, iar Tabelul 2 \u2014 pentru construirea Tabelului 3 \u0219i a\u0219a mai departe. Chiar dac\u0103 niciun atribut din Tabelul 1 nu particip\u0103 la construirea Tabelului 3 (ci particip\u0103 alte atribute din Tabelul 2, ob\u021binute din alte surse), actualizarea versiunii acestei construc\u021bii va duce la costuri suplimentare, iar la maxim \u2014 la versiuni inutile \u00een Tabelul 3, care aici este \u201eneimplicat\u201d \u0219i a\u0219a mai departe \u00een lan\u021b.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/2935f93abc46f02bdc528accda2af758.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>3. Complexitate neliniar\u0103 a modific\u0103rilor<\/h4>\n<p>\n\u00cen acest context, fiecare nou\u0103 vitrin\u0103, construit\u0103 pe baza alteia, cre\u0219te num\u0103rul locurilor \u00een care datele pot \u201edeveni incoerente\u201d atunci c\u00e2nd se fac modific\u0103ri \u00een ETL. Aceasta, la r\u00e2ndul s\u0103u, duce la cre\u0219terea complexit\u0103\u021bii (\u0219i duratei) fiec\u0103rei modific\u0103ri ulterioare.<\/p>\n<p>Dac\u0103 cele de mai sus se refer\u0103 la sisteme cu procese ETL rareori modificate, atunci este posibil s\u0103 tr\u0103ie\u0219ti \u00een aceast\u0103 paradigm\u0103 \u2014 este suficient s\u0103 te asiguri c\u0103 noile modific\u0103ri sunt corect integrate \u00een toate obiectele asociate. Dac\u0103 modific\u0103rile se \u00eent\u00e2mpl\u0103 frecvent, probabilitatea de a \u201euita\u201d din \u00eent\u00e2mplare c\u00e2teva leg\u0103turi cre\u0219te semnificativ.<\/p>\n<p>Dac\u0103 mai ad\u0103ug\u0103m \u0219i faptul c\u0103 ETL \u201eversionat\u201d este semnificativ mai complex dec\u00e2t cel \u201eneversionat\u201d, evitarea erorilor \u00een timpul modific\u0103rilor frecvente devine destul de dificil\u0103.<\/p>\n<h3>Stocarea obiectelor \u0219i atributelor \u00een Data Vault \u0219i Modelul Anchor<\/h3>\n<p>\nAbordarea propus\u0103 de autorii arhitecturilor flexibile poate fi formulat\u0103 astfel:<\/p>\n<blockquote><p>Este necesar s\u0103 separi ceea ce se schimb\u0103 de ceea ce r\u0103m\u00e2ne constant. Cu alte cuvinte, trebuie s\u0103 stochezi cheile separat de atribute.<\/p><\/blockquote>\n<p> \u00cen acest context, nu trebuie confundat <b>neversionatul<\/b> atribut cu <b>neschimbabilul<\/b>: primul nu p\u0103streaz\u0103 istoricul schimb\u0103rilor sale, dar poate suferi modific\u0103ri (de exemplu, \u00een cazul corect\u0103rii unei erori de introducere sau ob\u021binerii de date noi), iar al doilea \u2014 nu se schimb\u0103 niciodat\u0103.<\/p>\n<p>Perspectivele asupra a ceea ce poate fi considerat neschimbabil \u00een Data Vault \u0219i modelul ancor\u0103 difer\u0103.<\/p>\n<p>Din punct de vedere arhitectural <b>Data Vault<\/b>, ceea ce este neschimbabil poate fi considerat <b>\u00eentregul set de chei<\/b> \u2014 chei naturale (CUI-ul organiza\u021biei, codul produsului \u00een sistemul surs\u0103 etc.) \u0219i chei surrogate. \u00centre timp, celelalte atribute pot fi \u00eemp\u0103r\u021bite pe grupe \u00een func\u021bie de surs\u0103 \u0219i\/sau frecven\u021ba schimb\u0103rilor \u0219i <b>pentru fiecare grup\u0103 trebuie s\u0103 fie \u021binut un tabel separat<\/b> cu un set independent de versiuni.<\/p>\n<p>\u00cen paradigma <b>Modelului Anchor<\/b> se consider\u0103 neschimbabil <b>doar cheia surrogat<\/b> a entit\u0103\u021bii. Tot ce este altceva (inclusiv cheile naturale) \u2014 este doar o situa\u021bie particular\u0103 a atributelor sale. De asemenea, <b>toate atributele sunt \u00een mod implicit independente \u00eentre ele<\/b>, prin urmare, pentru fiecare atribut trebuie s\u0103 fie creat un <b>tabel separat<\/b>.<\/p>\n<p>\u00cen <b>Data Vault<\/b> tabelele care con\u021bin cheile entit\u0103\u021bilor se numesc <b>Huburi (Hub)<\/b>. Huburile con\u021bin \u00eentotdeauna un set fix de c\u00e2mpuri:<\/p>\n<ul>\n<li>Chei naturale ale entit\u0103\u021bii<\/li>\n<li>Cheie surrogat<\/li>\n<li>Referin\u021b\u0103 la surs\u0103<\/li>\n<li>Timpul ad\u0103ug\u0103rii \u00eenregistr\u0103rii<\/li>\n<\/ul>\n<p>\n\u00cenregistr\u0103rile din Huburi <b>nu se schimb\u0103 niciodat\u0103 \u0219i nu au versiuni.<\/b>. Hub-urile arat\u0103 foarte asem\u0103n\u0103tor cu tabelele de tip ID-map, utilizate \u00een unele sisteme pentru generarea de surrogate, \u00eens\u0103 se recomand\u0103 utilizarea unui hash bazat pe setul de chei de business ca surrogate \u00een Data Vault. Aceast\u0103 abordare simplific\u0103 \u00eenc\u0103rcarea rela\u021biilor \u0219i atributelor din surse (nu este necesar s\u0103 te al\u0103turi hub-ului pentru a ob\u021bine surrogate, e suficient s\u0103 calculezi hash-ul de la cheia natural\u0103), dar poate provoca alte probleme (legate, de exemplu, de coliziunile, casele de litere \u0219i caracterele nelimitate \u00een cheile de tip string etc.), prin urmare, nu este general acceptat\u0103.<\/p>\n<p>Toate celelalte atribute ale entit\u0103\u021bilor sunt stocate \u00een tabele speciale, numite <b>Sateli\u021bi (Satellit)<\/b>. Un hub poate avea mai mul\u021bi sateli\u021bi, care stocheaz\u0103 diferite seturi de atribute.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/e145f211b8cfb51894e6e1789991e1cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDistribu\u021bia atributelor \u00eentre sateli\u021bi se face prin principiul <b>modific\u0103rii comune<\/b> \u2014 \u00eentr-un satelit pot fi stocate atribute ne-versionate (de exemplu, data na\u0219terii \u0219i CNP-ul pentru persoane fizice), \u00eentr-altul atribute versionate care se schimb\u0103 rar (de exemplu, numele de familie \u0219i num\u0103rul pa\u0219aportului), iar \u00eentr-unul ter\u021b atribute care se schimb\u0103 frecvent (de exemplu, adresa de livrare, categoria, data ultimei comenzi etc.). Versionarea este gestionat\u0103 la nivelul sateli\u021bilor individuali, nu al entit\u0103\u021bii \u00een ansamblu, prin urmare, este recomandat ca distribu\u021bia atributelor s\u0103 fie astfel, \u00eenc\u00e2t suprapunerea versiunilor \u00eentr-un singur satelit s\u0103 fie minim\u0103 (ceea ce reduce num\u0103rul total de versiuni stocate). <\/p>\n<p>De asemenea, pentru a optimiza procesul de \u00eenc\u0103rcare a datelor, atributele ob\u021binute din diverse surse sunt adesea externalizate \u00een sateli\u021bi separa\u021bi.<\/p>\n<p>Sateli\u021bii se leag\u0103 de Hub prin <b>cheia extern\u0103<\/b> (ceea ce corespunde cardinalit\u0103\u021bii 1-la-mul\u021bi). Aceasta \u00eenseamn\u0103 c\u0103 valorile multiple ale atributelor (de exemplu, mai multe numere de telefon de contact pentru un singur client) sunt sus\u021binute de aceast\u0103 arhitectur\u0103 \u201e\u00een mod implicit\u201d.<\/p>\n<p>\u00cen <b>Modelul Ancor\u0103 (Anchor Model)<\/b> tabelele care stocheaz\u0103 cheile se numesc <b>Ancore (Anchor)<\/b>. \u0218i ele stocheaz\u0103: <\/p>\n<ul>\n<li><b>Numai chei surrogate<\/b><\/li>\n<li>Referin\u021b\u0103 la surs\u0103<\/li>\n<li>Timpul ad\u0103ug\u0103rii \u00eenregistr\u0103rii<\/li>\n<\/ul>\n<p>\nCheile naturale, din perspectiva Modelului Ancor\u0103, sunt considerate <b>atribute obi\u0219nuite<\/b>. Aceast\u0103 variant\u0103 poate p\u0103rea mai complex\u0103 pentru \u00een\u021belegere, dar ofer\u0103 mult mai mult spa\u021biu pentru identificarea obiectului.<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/0bf941581fd1177eda228d4429cf69db.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe exemplu, atunci c\u00e2nd datele despre aceea\u0219i entitate pot proveni din diferite sisteme, fiecare dintre acestea utiliz\u00e2nd o cheie natural\u0103 proprie. \u00cen Data Vault, acest lucru poate duce la construc\u021bii destul de voluminoase din mai multe hub-uri (c\u00e2te unul pentru fiecare surs\u0103 + o versiune principal\u0103 unificatoare), \u00een modelul Ancor\u0103, \u00eens\u0103 cheia natural\u0103 a fiec\u0103rei surse ajunge \u00een atributul s\u0103u \u0219i poate fi utilizat\u0103 la \u00eenc\u0103rcare independent de celelalte. <\/p>\n<p>Dar aici se ascunde un moment viclean: dac\u0103 \u00eentr-o entitate se unesc atribute din diferite sisteme, cel mai probabil exist\u0103 anumite <b>reguli de \u201eunire\u201d<\/b>, \u00een conformitate cu care sistemul trebuie s\u0103 \u00een\u021beleag\u0103 c\u0103 \u00eenregistr\u0103rile din diferite surse corespund unei singure instan\u021be a entit\u0103\u021bii. <\/p>\n<p>\u00cen <b>Data Vault<\/b> Aceste reguli probabil c\u0103 vor determina formarea <b>\u201ehub-ului surrogate\u201d al entit\u0103\u021bii principale<\/b> \u0219i nu vor afecta hub-urile care stocheaz\u0103 cheile naturale ale surselor \u0219i atributele lor originale. Dac\u0103 la un moment dat regulile de unire se schimb\u0103 (sau vine o actualizare a atributelor pe baza c\u0103rora se realizeaz\u0103), va fi suficient s\u0103 se reformeze hub-urile surrogate.<\/p>\n<p>\u00cen <b>Modelul Ancor\u0103<\/b> \u00eens\u0103, aceast\u0103 entitate va fi cel mai probabil stocat\u0103 \u00een <b>o singur\u0103 ancor\u0103<\/b>. Aceasta \u00eenseamn\u0103 c\u0103 toate atributele, indiferent de sursa din care provin, vor fi legate de acela\u0219i surogat. A separa \u00eenregistr\u0103rile gre\u0219it unite \u0219i, \u00een general, a urm\u0103ri actualitatea unirii \u00eentr-un astfel de sistem poate fi semnificativ mai greu, \u00een special dac\u0103 regulile sunt destul de complexe \u0219i se schimb\u0103 frecvent, iar acela\u0219i atribut poate fi ob\u021binut din surse diferite (de\u0219i este cu siguran\u021b\u0103 posibil, deoarece fiecare versiune a atributului p\u0103streaz\u0103 o leg\u0103tur\u0103 cu sursa sa).<\/p>\n<p>\u00cen orice caz, dac\u0103 sistemul dumneavoastr\u0103 preconizeaz\u0103 implementarea func\u021bionalit\u0103\u021bii <b>de deduplicare, unire a \u00eenregistr\u0103rilor \u0219i alte elemente MDM<\/b>, este recomandat s\u0103 analiza\u021bi cu aten\u021bie aspectele stoc\u0103rii cheilor naturale \u00een metodologiile flexibile. Probabil, construc\u021bia mai voluminoas\u0103 a Data Vault s-ar putea dovedi mai sigur\u0103 din punct de vedere al erorilor de unire.<\/p>\n<p><b>Modelul Ancor\u0103<\/b> preconizeaz\u0103, de asemenea, un tip suplimentar de obiect, numit <b>Nod (Knot)<\/b> fiind un tip special <b>degenerat de ancor\u0103<\/b>, care poate con\u021bine un singur atribut. Nodurile sunt destinate stoc\u0103rii dic\u021bionarelor plate (de exemplu, sex, stare civil\u0103, categorie de servicii clien\u021bi etc.). Spre deosebire de Ancor\u0103, Nodul <b>nu are tabele de atribute asociate.<\/b>, iar singurul s\u0103u atribut (numele) este \u00eentotdeauna stocat \u00eentr-o singur\u0103 tabel\u0103 cu cheia. Nodurile sunt legate de Ancore prin tabelele de leg\u0103tur\u0103 (Tie), la fel cum ancorele sunt legate \u00eentre ele.<\/p>\n<p>Nu exist\u0103 un consens clar cu privire la utilizarea Nodurilor. De exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/azathot\/\">Nikolai Golov<\/a><\/noindex>, care promoveaz\u0103 activ utilizarea modelului Ancor\u0103 \u00een Rusia, consider\u0103 (nu f\u0103r\u0103 temei) c\u0103 pentru niciun dic\u021bionar nu se poate afirma cu certitudine c\u0103 el <b>\u00eentotdeauna<\/b> va fi static \u0219i unidimensional, a\u0219a c\u0103 pentru toate obiectele este mai bine s\u0103 se utilizeze din capul locului o Ancor\u0103 complet\u0103.<\/p>\n<p>O alt\u0103 distinc\u021bie important\u0103 \u00eentre Data Vault \u0219i modelul Ancor\u0103 const\u0103 \u00een existen\u021ba <b>atributelor la leg\u0103turi.<\/b>:<\/p>\n<p>\u00cen <b>Data Vault<\/b> Leg\u0103turile sunt obiecte la fel de complete ca \u0219i Hub-urile \u0219i pot avea <b>atribute proprii.<\/b>. \u00cen <b>Modelul Ancor\u0103<\/b> Leg\u0103turile sunt utilizate doar pentru a conecta Ancorele \u0219i <b>nu pot avea atribute proprii.<\/b>. Aceast\u0103 distinc\u021bie ofer\u0103 abord\u0103ri de modelare semnificativ diferite <b>a faptelor<\/b>, despre care vom discuta mai departe.<\/p>\n<h3>Stocarea faptelor<\/h3>\n<p>\nP\u00e2n\u0103 acum am discutat \u00een principal despre modelarea dimensiunilor. Faptele sunt pu\u021bin mai complexe.<\/p>\n<p>\u00cen <b>Data Vault<\/b> obiect tipic pentru stocarea faptelor \u2014<b> Leg\u0103tura (Link)<\/b>, \u00een Satelitele c\u0103reia se adun\u0103 indicatorii materiali.<\/p>\n<p>Aceast\u0103 abordare pare a fi intuitiv\u0103. Ofer\u0103 acces simplu la indicatorii analiza\u021bi \u0219i este, \u00een general, similar\u0103 cu o tabel\u0103 tradi\u021bional\u0103 a faptelor (doar c\u0103 indicatorii sunt stoca\u021bi nu \u00een tabelul propriu-zis, ci \u00een unul \u201evecin\u201d). Dar sunt \u0219i capcane: una dintre modific\u0103rile tipice ale modelului - extinderea cheii faptului - necesit\u0103 <b>ad\u0103ugarea unei noi chei externe \u00een Link.<\/b>. Acest lucru, la r\u00e2ndul s\u0103u, \u201estric\u0103\u201d modularitatea \u0219i poate provoca necesitatea modific\u0103rilor altor obiecte.<\/p>\n<p>\u00cen <b>Modelul Ancor\u0103<\/b> Leg\u0103tura nu poate avea atribute proprii, a\u0219a c\u0103 aceast\u0103 abordare nu va func\u021biona - toate atribut \u0219i indicatori trebuie s\u0103 fie lega\u021bi de o anumit\u0103 ancor\u0103. Concluzia este simpl\u0103 - <b>fiecare fapt are nevoie de propria ancor\u0103.<\/b>. Pentru o parte din ceea ce obi\u015fnuim s\u0103 percepem ca fapte, aceasta poate p\u0103rea natural \u2014 de exemplu, faptul achizi\u0163iei se reduce la un obiect \u201ecomand\u0103\u201d sau \u201ebon\u201d, vizita pe site \u2014 la o sesiune etc. Dar exist\u0103 \u015fi fapte pentru care g\u0103sirea unui astfel de \u201eobiect-port\u201d nu este at\u00e2t de simpl\u0103 \u2014 de exemplu, stocurile de produse de la \u00eenceputul fiec\u0103rei zile. <\/p>\n<p>Astfel, problema modularit\u0103\u0163ii la extinderea cheii faptei \u00een Modelul Ancora nu apare (este suficient s\u0103 adaugi o nou\u0103 Rela\u0163ie la Ancora corespunz\u0103toare), dar proiectarea modelului pentru a reflecta faptele este mai pu\u0163in clar\u0103, pot ap\u0103rea Ancore \u201eartificiale\u201d, care s\u0103 reflecte modelul obiectual al afacerii \u00eentr-un mod nu at\u00e2t de evident.<\/p>\n<h3>Cum se ob\u021bine flexibilitatea<\/h3>\n<p>\nConstruc\u0163ia rezultat\u0103 \u00een ambele cazuri con\u0163ine <b>substantially more tables<\/b>, dec\u00e2t o m\u0103surare tradi\u0163ional\u0103. Dar poate ocupa <b>substantially less disk space<\/b> pentru acela\u015fi set de atribute de versiune, la fel ca o m\u0103surare tradi\u0163ional\u0103. Nicio magie aici, desigur \u2014 totul se bazeaz\u0103 pe normalizare. Distribuind atributele \u00een Satelite (\u00een Data Vault) sau \u00een tabele separate (Modelul Ancora), reducem (sau elimin\u0103m complet) <b>duplicarea valorilor anumitor atribute atunci c\u00e2nd se schimb\u0103 altele<\/b>.<\/p>\n<p>Pentru <b>Data Vault<\/b> c\u00e2\u015ftigul va depinde de distribu\u0163ia atributelor \u00een Sateli\u0163i, iar pentru <b>Modelul Ancor\u0103<\/b> \u2014 practic direct propor\u0163ional cu num\u0103rul mediu de versiuni pe obiectul de m\u0103surare.<\/p>\n<p>Cu toate acestea, c\u00e2\u015ftigul \u00een ceea ce prive\u015fte spa\u0163iul ocupat \u2014 este un avantaj important, dar nu principalul avantaj al stoc\u0103rii separate a atributelor. \u00cempreun\u0103 cu stocarea separat\u0103 a rela\u0163iilor, aceast\u0103 abordare face depozitul <b>o construc\u0163ie modular\u0103<\/b>. Aceasta \u00eenseamn\u0103 c\u0103 ad\u0103ugarea at\u00e2t a atributelor separate, c\u00e2t \u015fi a unor noi domenii tematice \u00een acest model arat\u0103 ca <b>o extensie<\/b> peste setul existent de obiecte f\u0103r\u0103 a le modifica. \u015ei acesta este exact ceea ce face metodologiile descrise flexibile.<\/p>\n<p>De asemenea, aceasta aminte\u015fte de tranzi\u0163ia de la produc\u0163ia unitar\u0103 la cea de mas\u0103 \u2014 dac\u0103 \u00een abordarea tradi\u0163ional\u0103 fiecare tabel al modelului este unic \u015fi necesit\u0103 aten\u0163ie separat\u0103, \u00een metodologiile flexibile \u2014 acestea sunt deja un set de \u201epiese\u201d standard. Pe de o parte, num\u0103rul de tabele cre\u015fte, procesele de \u00eenc\u0103rcare \u015fi selectare a datelor trebuie s\u0103 par\u0103 mai complexe. Pe de alt\u0103 parte \u2014 devin <b>standard<\/b>. \u015ei asta \u00eenseamn\u0103 c\u0103 pot fi <b>sunt automatizate \u0219i gestionate cu metadate<\/b>. \u00centrebarea \u201ecum vom a\u0219eza?\u201d a c\u0103rei r\u0103spuns putea ocupa o parte semnificativ\u0103 din lucr\u0103rile de proiectare a modific\u0103rilor, acum pur \u0219i simplu nu se pune (la fel ca \u00eentrebarea despre influen\u021ba schimb\u0103rii modelului asupra proceselor existente). <\/p>\n<p>Acest lucru nu \u00eenseamn\u0103 c\u0103 anali\u0219tii \u00eentr-un astfel de sistem nu sunt necesari deloc \u2014 cineva totu\u015fi trebuie s\u0103 lucreze la setul de obiecte cu atribute \u0219i s\u0103 \u00een\u021beleag\u0103 de unde \u0219i cum se \u00eencarc\u0103 toate acestea. Dar volumul lucr\u0103rilor, precum \u0219i probabilitatea \u0219i costul erorii scad considerabil. At\u00e2t \u00een etapa de analiz\u0103, c\u00e2t \u0219i \u00een dezvoltarea ETL, care \u00eentr-o mare m\u0103sur\u0103 poate fi redus\u0103 la editarea metadatelor. <\/p>\n<h3>Latura \u00eentunecat\u0103<\/h3>\n<p>\nTot ceea ce a fost men\u021bionat mai sus face ca ambele abord\u0103ri s\u0103 fie cu adev\u0103rat flexibile, tehnologice \u0219i potrivite pentru elaborarea iterativ\u0103. Bine\u00een\u021beles, exist\u0103 \u0219i \u201eo lad\u0103 de murd\u0103rie\u201d, despre care cred c\u0103 deja v\u0103 da\u021bi seama.<\/p>\n<p>Dezintegrarea datelor, care st\u0103 la baza modularit\u0103\u021bii arhitecturilor flexibile, duce la o cre\u0219tere a num\u0103rului de tabele \u0219i, \u00een consecin\u021b\u0103, <b>costuri indirecte<\/b> la unire \u00een cadrul extragerii. Pentru a ob\u021bine pur \u0219i simplu toate atributele unei m\u0103sur\u0103tori, \u00eentr-un depozit clasic este suficient un singur select, \u00een timp ce o arhitectur\u0103 flexibil\u0103 va necesita o serie \u00eentreag\u0103 de uniri. De asemenea, dac\u0103 pentru rapoarte toate aceste uniri pot fi scrise dinainte, atunci anali\u0219tii, obi\u0219nui\u021bi s\u0103 scrie SQL manual, vor suferi \u0219i mai mult.<\/p>\n<p>Exist\u0103 c\u00e2teva fapte care faciliteaz\u0103 aceast\u0103 situa\u021bie:<\/p>\n<p><b>Atunci c\u00e2nd se lucreaz\u0103 cu dimensiuni mari, aproape niciodat\u0103 nu sunt utilizate simultan toate atributele sale.<\/b> Aceasta \u00eenseamn\u0103 c\u0103 num\u0103rul de uniri poate fi mai mic dec\u00e2t pare la prima vedere asupra modelului. \u00cen Data Vault se poate, de asemenea, lua \u00een considerare frecven\u021ba anticipat\u0103 a utiliz\u0103rii comune atunci c\u00e2nd se distribuie atributele \u00eentre sateli\u021bi. Totu\u0219i, Hub-urile sau Ancorele sunt necesare, \u00een primul r\u00e2nd, pentru generarea \u0219i maparea \u00eenlocuitorilor \u00een etapa de \u00eenc\u0103rcare \u0219i sunt rar utilizate \u00een interog\u0103ri (\u00een special acest lucru se refer\u0103 la Ancore).<\/p>\n<p><b>Toate uniri \u2014 pe cheie.<\/b> \u00cen plus, o metod\u0103 de stocare a datelor mai \u201ecompresat\u0103\u201d reduce cheltuielile de scanare a tabelelor acolo unde este necesar (de exemplu, atunci c\u00e2nd se filtreaz\u0103 dup\u0103 valoarea unui atribut). Aceasta poate duce la rezultate dintr-o baz\u0103 de date normalizat\u0103 cu multe join-uri care s\u0103 fie chiar mai rapide dec\u00e2t scanarea unei dimensiuni grele cu un num\u0103r mare de versiuni per r\u00e2nd.<\/p>\n<p>De exemplu, aici \u00een <noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/wp-content\/uploads\/2011\/05\/Anchor-Modeling.pdf\">aceast\u0103 <\/a><\/noindex> articol exist\u0103 un test comparativ detaliat de performan\u021b\u0103 al modelului Anchor cu o selec\u021bie dintr-un singur tabel.<\/p>\n<p><b>Foarte multe depinde de motor.<\/b> Multe dintre platformele moderne au mecanisme interne de optimizare a join-urilor. De exemplu, MS SQL \u0219i Oracle pot \u201es\u0103ri\u201d peste join-uri pe tabele dac\u0103 datele lor nu sunt utilizate nic\u0103ieri, \u00een afar\u0103 de alte join-uri, \u0219i nu influen\u021beaz\u0103 selec\u021bia final\u0103 (eliminarea tablelor\/join-urilor), iar MPP Vertica \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/wp-content\/uploads\/2011\/05\/Big_Data_Normalization.pdf\">experien\u021ba colegilor de la Avito<\/a><\/noindex>, s-a dovedit a fi un motor excelent pentru modelul Anchor cu o anumit\u0103 optimizare manual\u0103 a planului de interogare. Pe de alt\u0103 parte, stocarea modelului Anchor, de exemplu, pe Click House, care are suport limitat pentru join-uri, pare s\u0103 nu fie o idee foarte bun\u0103.<\/p>\n<p>\u00cen plus, pentru ambele arhitecturi exist\u0103 <b>trucuri speciale<\/b>, care faciliteaz\u0103 accesul la date (at\u00e2t din perspectiva performan\u021bei interog\u0103rilor, c\u00e2t \u0219i pentru utilizatorii finali). De exemplu, <b>tabelele Point-In-Time<\/b> \u00een Data Vault sau <b>func\u021bii tabelare speciale<\/b> \u00een modelul Anchor.<\/p>\n<h2>\u00cen concluzie<\/h2>\n<p>\nEsenta arhitecturilor flexibile discutate const\u0103 \u00een modularitatea construc\u021biei lor. <\/p>\n<p>Aceast\u0103 proprietate permite:<\/p>\n<ul>\n<li>Dup\u0103 o preg\u0103tire ini\u021bial\u0103, legat\u0103 de desf\u0103\u0219urarea metadatelor \u0219i scrierea algoritmilor ETL de baz\u0103, <b>s\u0103 furniz\u0103m rapid clientului primul rezultat<\/b> sub forma c\u00e2torva rapoarte care con\u021bin datele a doar c\u00e2torva obiecte surs\u0103. Nu este necesar s\u0103 g\u00e2ndim complet (chiar \u0219i la un nivel superior) \u00eentreaga modelare a obiectului pentru aceasta.<\/li>\n<li>Modelul de date poate \u00eencepe s\u0103 func\u021bioneze (\u0219i s\u0103 aduc\u0103 beneficii) cu doar 2-3 obiecte, iar apoi <b>s\u0103 se dezvolte treptat<\/b> (referitor la modelul Anchor, Nikolai <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/322510\/\">a aplicat <\/a><\/noindex>o compara\u021bie frumoas\u0103 cu o miceliu).<\/li>\n<li>Majoritatea modific\u0103rilor, inclusiv extinderea domeniului de subiect \u0219i ad\u0103ugarea de noi surse <b>nu afecteaz\u0103 func\u021bionalitatea existent\u0103 \u0219i nu prezint\u0103 riscul de a rupe ceva care func\u021bioneaz\u0103 deja.<\/b>.<\/li>\n<li>Datorit\u0103 decompozi\u021biei \u00een elemente standard, procesele ETL din aceste sisteme arat\u0103 uniform, iar scrierea lor este supus\u0103 algoritmiz\u0103rii \u0219i, \u00een cele din urm\u0103, <b>automatiz\u0103rii<\/b>.<\/li>\n<\/ul>\n<p>\nPre\u021bul acestei flexibilit\u0103\u021bi este <b>performan\u021ba<\/b>. Aceasta nu \u00eenseamn\u0103 c\u0103 nu este posibil s\u0103 atingi o performan\u021b\u0103 acceptabil\u0103 cu astfel de modele. Cel mai adesea, poate fi necesar s\u0103 depui mai mult efort \u0219i aten\u021bie la detalii pentru a ob\u021bine metricile dorite.<\/p>\n<h2>Aplica\u021bii<\/h2>\n<p><\/p>\n<h4>Tipurile de entitate <b>Data Vault<\/b><\/h4>\n<p>\n<img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/6bbaee505587152d7e5c11b2889bf25a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMai multe despre Data Vault:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/danlinstedt.com\/\">Site-ul lui Dan Linstedt<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.dwh-club.com\/ru\/dwh-bi-articles\/vse-o-data-vault.html\">Totul despre Data Vault \u00een rom\u00e2n\u0103<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348188\/\">Despre Data Vault pe Habr<\/a><\/noindex><\/p>\n<h4>Tipurile de entit\u0103\u021bi <b>Modelului Anchor<\/b><\/h4>\n<p>\n<img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/d518f01e6a5c241e9e73d1ea0210c557.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMai multe despre Anchor Model:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/\">Site-ul creatorilor Anchor Model<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/322510\/\">Articol despre experien\u021ba implement\u0103rii Anchor Model \u00een Avito<\/a><\/noindex><\/p>\n<p>Tabel rezumativ cu caracteristicile comune \u0219i diferen\u021bele abord\u0103rilor discutate:<\/p>\n<p><img decoding=\"async\" alt=\"Prezentare general\u0103 a metodologiilor flexibile de proiectare a DWH\" src=\"\/wp-content\/uploads\/2020\/08\/807717245fd874ab141031fc64e584fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/glowbyte\/blog\/515940\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435. \u041c\u043d\u043e\u0433\u043e\u0435 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0430\u0437\u044b \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435. \u041e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u0431\u044b\u043b\u0438 \u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u201c\u0437\u0432\u0435\u0437\u0434\u0430\u201d \u0441 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443: \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 3NF, \u0432\u0438\u0442\u0440\u0438\u043d\u044b \u2014 \u0437\u0432\u0435\u0437\u0434\u0430. \u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92016,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92015","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=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435.\" \/>\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\/obzor-gibkih-metodologij-proektirovaniya-dwh\" \/>\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\u041e\u0431\u0437\u043e\u0440 \u0433\u0438\u0431\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DWH | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh\" \/>\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=\"2020-08-21T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-21T17:42:13+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\udd47Recenzia metodologiilor flexibile de proiectare DWH | ProHoster","description":"Dezvoltarea unui depozit este o activitate de durat\u0103 \u0219i serioas\u0103.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","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\u041e\u0431\u0437\u043e\u0440 \u0433\u0438\u0431\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DWH | ProHoster","og:description":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","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":"2020-08-21T17:42:13+00:00","article:modified_time":"2020-08-21T17:42:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92015","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:16:44","updated":"2022-09-27 14:57:59","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\/92015","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=92015"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/92015\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/92016"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=92015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=92015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=92015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}