{"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\/fr\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","title":{"rendered":"Vue d'ensemble des m\u00e9thodologies flexibles de conception de DWH","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le d\u00e9veloppement d'un entrep\u00f4t est une t\u00e2che longue et s\u00e9rieuse. <\/p>\n<p>Beaucoup de choses dans la vie d'un projet d\u00e9pendent de la qualit\u00e9 de la conception du mod\u00e8le d'objet et de la structure de la base de donn\u00e9es d\u00e8s le d\u00e9part.<\/p>\n<p>L'approche courante consiste \u00e0 utiliser diverses combinaisons du sch\u00e9ma en \u00e9toile avec la troisi\u00e8me forme normale. En r\u00e8gle g\u00e9n\u00e9rale, selon le principe : donn\u00e9es sources \u2014 3NF, vitrines \u2014 \u00e9toile. Cette approche, valid\u00e9e par le temps et soutenue par de nombreuses recherches, est la premi\u00e8re (et parfois la seule) id\u00e9e qui vient \u00e0 l'esprit d'un expert DWH lorsqu'il pense \u00e0 l'apparence d'un entrep\u00f4t analytique.<\/p>\n<p>D'autre part, le monde des affaires dans son ensemble et les exigences des clients en particulier ont tendance \u00e0 changer rapidement, tandis que les donn\u00e9es continuent de cro\u00eetre \u00e0 la fois en profondeur et en largeur. C'est ici que se r\u00e9v\u00e8le le principal inconv\u00e9nient du mod\u00e8le en \u00e9toile : sa flexibilit\u00e9 limit\u00e9e. <b>flexibilit\u00e9<\/b>.<\/p>\n<p>Et si, dans votre vie tranquille et confortable de d\u00e9veloppeur DWH, soudainement :<\/p>\n<ul>\n<li>une t\u00e2che est apparue pour \u00ab faire rapidement quelque chose, et nous verrons plus tard \u00bb ;<\/li>\n<li>un projet en plein essor est arriv\u00e9, avec l'int\u00e9gration de nouvelles sources et le remodelage du mod\u00e8le d'affaires au moins une fois par semaine ;<\/li>\n<li>un client, qui n\u2019a aucune id\u00e9e de l\u2019apparence et des fonctions finales du syst\u00e8me, mais est pr\u00eat \u00e0 exp\u00e9rimenter et \u00e0 affiner progressivement le r\u00e9sultat souhait\u00e9 tout en s\u2019approchant de celui-ci ;<\/li>\n<li>un chef de projet s'est pr\u00e9sent\u00e9 avec la bonne nouvelle : \u00ab Eh bien, maintenant nous avons l'agile ! \u00bb<\/li>\n<\/ul>\n<p>\nOu si vous souhaitez simplement savoir comment d'autres mod\u00e8les d'entrep\u00f4ts peuvent \u00eatre construits - bienvenue sous le capot !<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de 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>Que signifie \u00ab flexibilit\u00e9 \u00bb<\/h3>\n<p>\nD'abord, d\u00e9finissons les propri\u00e9t\u00e9s qu'un syst\u00e8me doit poss\u00e9der pour \u00eatre qualifi\u00e9 de \u00ab flexible \u00bb. <\/p>\n<p>Il convient de pr\u00e9ciser que les propri\u00e9t\u00e9s d\u00e9crites doivent se rapporter strictement au <b>syst\u00e8me<\/b>, et non au <b>processus <\/b>de son d\u00e9veloppement. Par cons\u00e9quent, si vous vouliez lire sur Agile en tant que m\u00e9thodologie de d\u00e9veloppement, il vaut mieux consulter d'autres articles. Par exemple, ici m\u00eame sur Habr, il existe de nombreux mat\u00e9riaux int\u00e9ressants (comme <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/436178\/\">des revues<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/284012\/\">pratiques<\/a><\/noindex>, et via <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataart\/blog\/245605\/\">probl\u00e9matiques<\/a><\/noindex>).<\/p>\n<p>Cela ne signifie pas que le processus de d\u00e9veloppement et la structure du DWH ne sont pas li\u00e9s. En g\u00e9n\u00e9ral, d\u00e9velopper un entrep\u00f4t avec une architecture flexible en suivant le principe Agile devrait \u00eatre nettement plus facile. Cependant, dans la pratique, on rencontre plus souvent des cas de d\u00e9veloppement d'un DWH classique selon Kimball et DataVault en waterfall que de co\u00efncidences heureuses de flexibilit\u00e9 entre les deux approches dans un m\u00eame projet.<\/p>\n<p>Alors, quelles capacit\u00e9s un entrep\u00f4t flexible doit-il poss\u00e9der ? On peut souligner trois points :<\/p>\n<ol>\n<li><b>Livraison anticip\u00e9e et modifications rapides<\/b> \u2014 cela signifie qu'id\u00e9alement, le premier r\u00e9sultat commercial (par exemple, les premiers rapports fonctionnels) doit \u00eatre obtenu le plus t\u00f4t possible, c'est-\u00e0-dire avant m\u00eame que le syst\u00e8me soit enti\u00e8rement con\u00e7u et mis en \u0153uvre. Chaque am\u00e9lioration suivante doit \u00e9galement prendre le moins de temps possible.<\/li>\n<li><b>Am\u00e9lioration it\u00e9rative<\/b> \u2014 cela signifie que chaque am\u00e9lioration suivante ne doit id\u00e9alement pas affecter les fonctionnalit\u00e9s d\u00e9j\u00e0 en place. Ce point devient souvent le plus grand cauchemar sur de grands projets : t\u00f4t ou tard, certains objets commencent \u00e0 accumuler tant de connexions qu'il devient plus simple de reproduire compl\u00e8tement la logique \u00e0 c\u00f4t\u00e9 plut\u00f4t que d'ajouter un champ dans une table existante. Et si vous \u00eates \u00e9tonn\u00e9 que l'analyse de l'impact d'une am\u00e9lioration sur les objets existants puisse prendre plus de temps que l'am\u00e9lioration elle-m\u00eame, vous n'avez probablement pas encore travaill\u00e9 avec de grands DWH dans le secteur bancaire ou des t\u00e9l\u00e9communications.<\/li>\n<li><b>Adaptation continue aux exigences changeantes des entreprises<\/b> \u2014 la structure d'objets g\u00e9n\u00e9rale doit \u00eatre con\u00e7ue non seulement en tenant compte des extensions possibles, mais en pr\u00e9voyant que l'orientation de cette extension ne pourrait m\u00eame pas vous venir \u00e0 l'esprit au stade de la conception.<\/li>\n<\/ol>\n<p>\nEt oui, r\u00e9pondre \u00e0 toutes ces exigences dans un seul syst\u00e8me est possible (\u00e9videmment, dans certains cas et avec certaines r\u00e9serves).<\/p>\n<p>Ci-dessous, je vais examiner deux des m\u00e9thodologies de conception flexible les plus populaires pour les DWH \u2014 <b>Mod\u00e8le d'ancrage<\/b> et <b>Data Vault<\/b>. Rester en dehors de telles merveilleuses techniques, comme l'EAV, la 6NF (dans sa forme pure) et tout ce qui concerne les solutions NoSQL \u2014 non pas parce qu'elles sont en quelque sorte inf\u00e9rieures, et m\u00eame pas parce que cet article risquerait d'avoir le volume d'une th\u00e8se moyenne. Simplement, tout cela concerne des solutions de classe diff\u00e9rente \u2014 soit des techniques que vous pouvez appliquer dans des cas sp\u00e9cifiques, ind\u00e9pendamment de l'architecture g\u00e9n\u00e9rale de votre projet (comme l'EAV), soit des paradigmes globaux diff\u00e9rents de stockage de l'information (comme les bases de donn\u00e9es graphiques et autres options NoSQL).<\/p>\n<h3>Les probl\u00e8mes de l'approche \u00ab classique \u00bb et leurs solutions dans les m\u00e9thodologies flexibles<\/h3>\n<p>\n<i>Par \u00ab approche classique \u00bb, j'entends la bonne vieille \u00e9toile (quelle que soit la mise en \u0153uvre sp\u00e9cifique des couches sous-jacentes, que les adeptes de Kimball, Inmon et CDM me pardonnent).<br \/>\n<\/i><\/p>\n<h4>1. La cardinalit\u00e9 stricte des relations<\/h4>\n<p>\n\u00c0 la base de ce mod\u00e8le se trouve une s\u00e9paration claire des donn\u00e9es en <b>dimensions (Dimension)<\/b> et <b>faits (Fact)<\/b>. Et c'est, bon sang, logique \u2014 car l'analyse des donn\u00e9es, dans la grande majorit\u00e9 des cas, se r\u00e9sume pr\u00e9cis\u00e9ment \u00e0 l'analyse de certains indicateurs num\u00e9riques (faits) sous certains angles (dimensions).<\/p>\n<p>Les relations entre les objets sont \u00e9tablies sous forme de liens entre les tables par une cl\u00e9 \u00e9trang\u00e8re. Cela semble tout \u00e0 fait naturel, mais entra\u00eene imm\u00e9diatement la premi\u00e8re limitation de la flexibilit\u00e9 \u2014 <b>la d\u00e9finition stricte de la cardinalit\u00e9 des relations<\/b>.<\/p>\n<p>. Cela signifie qu'\u00e0 l'\u00e9tape de conception des tables, vous devez d\u00e9finir avec pr\u00e9cision pour chaque paire d'objets li\u00e9s s'ils peuvent \u00eatre de type plusieurs-\u00e0-plusieurs, ou uniquement un-\u00e0-plusieurs, et dans quel sens. Cela d\u00e9pend directement de laquelle des tables aura la cl\u00e9 primaire et laquelle aura la cl\u00e9 \u00e9trang\u00e8re. Le changement de cette relation lors de l'obtention de nouvelles exigences entra\u00eenera tr\u00e8s probablement une refonte de la base.<\/p>\n<p>Par exemple, en concevant l'objet \u00ab re\u00e7u de caisse \u00bb, vous vous \u00eates appuy\u00e9 sur les promesses solennelles du d\u00e9partement des ventes pour pr\u00e9voir la possibilit\u00e9 d'une action <b>d'une promotion sur plusieurs positions de re\u00e7us<\/b> mais pas l'inverse :<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/15226cb79c30364d94147383ba36a8fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEt apr\u00e8s un certain temps, les coll\u00e8gues ont introduit une nouvelle strat\u00e9gie marketing, dans laquelle plusieurs promotions peuvent s'appliquer simultan\u00e9ment \u00e0 une m\u00eame position. <b>Et maintenant, vous devez modifier les tables, en isolant la relation dans un objet s\u00e9par\u00e9.<\/b>. <\/p>\n<p>(Tous les objets d\u00e9riv\u00e9s o\u00f9 la v\u00e9rification des promotions se produit doivent \u00e9galement \u00eatre retravaill\u00e9s maintenant).<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/3c4d84a31088660257d74c4c703071e0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Relations dans Data Vault et Mod\u00e8le Ancre<\/b><\/p>\n<p>\u00c9viter une telle situation s'est av\u00e9r\u00e9 assez simple : il ne faut pas faire confiance au service des ventes pour cela. <b>Conserver toutes les relations dans des tables s\u00e9par\u00e9es d\u00e8s le d\u00e9part.<\/b> Et les traiter comme des plusieurs-\u00e0-plusieurs. <\/p>\n<p>Cette approche a \u00e9t\u00e9 propos\u00e9e <b>par Dan Linstedt<\/b> comme partie de la paradigme <b>Data Vault<\/b> et enti\u00e8rement soutenue <b>par Lars R\u00f6nnb\u00e4ck<\/b> dans <b>Mod\u00e8le Ancre<\/b>.<\/p>\n<p>Au final, nous obtenons la premi\u00e8re caract\u00e9ristique distinctive des m\u00e9thodologies flexibles :<\/p>\n<blockquote><p>Les relations entre objets ne sont pas stock\u00e9es dans les attributs des entit\u00e9s parent, mais repr\u00e9sentent un type d'objet distinct.<\/p><\/blockquote>\n<p>Dans <b>Data Vault<\/b> Ces tables de liaison sont appel\u00e9es <b>Link<\/b>, et dans <b>Mod\u00e8le Ancre<\/b> \u2014 <b>Tie<\/b>. \u00c0 premi\u00e8re vue, elles se ressemblent beaucoup, bien que leurs diff\u00e9rences ne se limitent pas simplement \u00e0 leur nom (nous en discuterons plus bas). Dans les deux architectures, les tables de liaison peuvent relier <b>un nombre quelconque d'entit\u00e9s<\/b> (pas n\u00e9cessairement 2).<\/p>\n<p>Cette redondance apparente offre une flexibilit\u00e9 significative lors des modifications. Cette structure devient tol\u00e9rante non seulement aux changements de cardinalit\u00e9 des relations existantes, mais aussi \u00e0 l'ajout de nouvelles \u2014 si maintenant la position de caisse a aussi un lien avec le caissier qui l'a enregistr\u00e9e, l'apparition de ce lien devient simplement un surcro\u00eet par rapport aux tables existantes sans affecter les objets et processus actuels.<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/6a3b942a6e5d04dcbe2ff0881ebdf1bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>2. Duplication des donn\u00e9es<\/h4>\n<p>\nLe deuxi\u00e8me probl\u00e8me que les architectures flexibles r\u00e9solvent est moins \u00e9vident et est principalement caract\u00e9ristique des <b>mesures de type SCD2<\/b> (mesures lentement changeantes de deuxi\u00e8me type), bien que pas seulement pour elles.<\/p>\n<p>Dans un entrep\u00f4t classique, une mesure est g\u00e9n\u00e9ralement une table contenant une cl\u00e9 de substitution (en tant que PK) ainsi qu'un ensemble de cl\u00e9s et d'attributs commerciaux dans des colonnes s\u00e9par\u00e9es. <\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/059dd47b2302b58c19a0144061b78cb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi la mesure prend en charge la versioning, un ensemble standard de champs est compl\u00e9t\u00e9 par des bornes temporelles de validit\u00e9 de la version, et une ligne dans la source appara\u00eet avec plusieurs versions dans l'entrep\u00f4t (une pour chaque changement des attributs versionnels).<\/p>\n<p>Si une dimension contient au moins un attribut versionn\u00e9 souvent modifi\u00e9, le nombre de versions de cette dimension sera consid\u00e9rable (m\u00eame si les autres attributs ne sont pas versionn\u00e9s ou ne changent jamais), et si plusieurs de ces attributs existent, le nombre de versions peut cro\u00eetre de mani\u00e8re exponentielle en fonction de leur quantit\u00e9. Une telle dimension peut occuper une quantit\u00e9 substantielle d'espace disque, bien que la majorit\u00e9 des donn\u00e9es stock\u00e9es soient simplement des duplications des valeurs d'attributs inalt\u00e9rables provenant d'autres lignes.<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/f3d5a4fd83a5ef36355961302173791d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c0 cela s'ajoute tr\u00e8s souvent <b>la d\u00e9normalisation<\/b> \u2014 une partie des attributs est intentionnellement stock\u00e9e sous forme de valeur, et non comme r\u00e9f\u00e9rence \u00e0 un r\u00e9pertoire ou une autre dimension. Cette approche acc\u00e9l\u00e8re l'acc\u00e8s aux donn\u00e9es, r\u00e9duisant le nombre de jointures lors de l'interrogation de la dimension.<\/p>\n<p>En g\u00e9n\u00e9ral, cela conduit \u00e0 ce que <b>la m\u00eame information soit stock\u00e9e simultan\u00e9ment \u00e0 plusieurs endroits<\/b>. Par exemple, les informations concernant la r\u00e9gion de r\u00e9sidence et l'appartenance \u00e0 une cat\u00e9gorie de client peuvent \u00eatre simultan\u00e9ment stock\u00e9es dans les dimensions \u00ab Client \u00bb, ainsi que dans les faits \u00ab Achat \u00bb, \u00ab Livraison \u00bb et \u00ab Appels au centre d'appel \u00bb, en plus de la table de correspondance \u00ab Client \u2014 Responsable Client \u00bb.<\/p>\n<p>Dans l'ensemble, ce qui a \u00e9t\u00e9 d\u00e9crit ci-dessus s'applique \u00e9galement aux dimensions ordinaires (non versionn\u00e9es), mais dans le cas des dimensions versionn\u00e9es, cela peut avoir une autre ampleur : l'apparition d'une nouvelle version d'un objet (surtout r\u00e9troactivement) ne se limite pas simplement \u00e0 la mise \u00e0 jour de toutes les tables associ\u00e9es, mais entra\u00eene une apparition en cascade de nouvelles versions des objets concern\u00e9s \u2014 lorsque la Table 1 est utilis\u00e9e pour construire la Table 2, et la Table 2 \u2014 pour construire la Table 3, etc. M\u00eame si aucun attribut de la Table 1 n'est impliqu\u00e9 dans la construction de la Table 3 (d'autres attributs de la Table 2, obtenus d'autres sources, le sont), la mise \u00e0 jour versionn\u00e9e de cette construction entra\u00eenera au minimum des frais suppl\u00e9mentaires, et au maximum des versions superflues dans la Table 3, qui n'est ici<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/2935f93abc46f02bdc528accda2af758.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>3. Complexit\u00e9 non lin\u00e9aire des modifications<\/h4>\n<p>\n\u00c0 cela s'ajoute que chaque nouvelle vitrine construite sur la base d'une autre augmente le nombre d'endroits o\u00f9 les donn\u00e9es peuvent \u00ab diverger \u00bb lors de modifications dans l'ETL. Cela, \u00e0 son tour, entra\u00eene une augmentation de la complexit\u00e9 (et de la dur\u00e9e) de chaque modification suivante.<\/p>\n<p>Si ce qui pr\u00e9c\u00e8de concerne des syst\u00e8mes avec des processus ETL rarement d\u00e9velopp\u00e9s, il est possible de vivre dans cette paradigme \u2014 il suffit de veiller \u00e0 ce que les nouvelles modifications soient correctement int\u00e9gr\u00e9es dans tous les objets associ\u00e9s. Toutefois, si les modifications se produisent fr\u00e9quemment, la probabilit\u00e9 d'\u201coublier\u201d accidentellement plusieurs relations augmente consid\u00e9rablement.<\/p>\n<p>De plus, si l'on consid\u00e8re que l'ETL \"versionn\u00e9\" est nettement plus complexe que l'ETL \"non versionn\u00e9\", \u00e9viter les erreurs lors de la modification fr\u00e9quente de l'ensemble de ce syst\u00e8me devient suffisamment difficile.<\/p>\n<h3>Stockage des objets et des attributs dans le Data Vault et le mod\u00e8le Anchor<\/h3>\n<p>\nL'approche propos\u00e9e par les auteurs des architectures flexibles peut se formuler ainsi :<\/p>\n<blockquote><p>Il est n\u00e9cessaire de s\u00e9parer ce qui change de ce qui reste constant. Autrement dit, stocker les cl\u00e9s s\u00e9par\u00e9ment des attributs.<\/p><\/blockquote>\n<p> Il convient n\u00e9anmoins de ne pas confondre <b>non versionn\u00e9<\/b> attribut avec <b>constant<\/b>: le premier ne conserve pas l'historique de ses changements, mais peut changer (par exemple, lors de la correction d'une erreur de saisie ou de l'obtention de nouvelles donn\u00e9es), le second \u2014 ne change jamais.<\/p>\n<p>Les opinions sur ce qui peut effectivement \u00eatre consid\u00e9r\u00e9 comme constant dans le Data Vault et le mod\u00e8le Anchor varient.<\/p>\n<p>D'un point de vue architectural, <b>Data Vault<\/b>ce qui est constant peut \u00eatre consid\u00e9r\u00e9 comme <b>l'ensemble des cl\u00e9s<\/b> \u2014 cl\u00e9s naturelles (comme le num\u00e9ro d'identification de l'organisation, le code produit dans le syst\u00e8me source, etc.) et cl\u00e9s de substitution. Dans ce cas, les autres attributs peuvent \u00eatre class\u00e9s par groupes selon leur source et\/ou leur fr\u00e9quence de modification et <b>pour chaque groupe, maintenir une table distincte<\/b> avec un ensemble de versions ind\u00e9pendantes.<\/p>\n<p>Dans la paradigme <b>Anchor Model<\/b> ce qui est constant est consid\u00e9r\u00e9 comme <b>seulement la cl\u00e9 de substitution<\/b> de l'entit\u00e9. Tout le reste (y compris les cl\u00e9s naturelles) n'est qu'un cas particulier de ses attributs. Dans ce cadre, <b>tous les attributs sont par d\u00e9faut ind\u00e9pendants les uns des autres<\/b>, c'est pourquoi pour chaque attribut, une <b>table distincte doit \u00eatre cr\u00e9\u00e9e.<\/b>.<\/p>\n<p>Dans <b>Data Vault<\/b> Les tables contenant les cl\u00e9s des entit\u00e9s sont appel\u00e9es <b>Hubs.<\/b>Les Hubs contiennent toujours un ensemble fixe de champs :<\/p>\n<ul>\n<li>Cl\u00e9s naturelles de l'entit\u00e9<\/li>\n<li>Cl\u00e9 de substitution<\/li>\n<li>Lien vers la source<\/li>\n<li>Date d'ajout de l'enregistrement.<\/li>\n<\/ul>\n<p>\nLes enregistrements dans les Hubs <b>ne changent jamais et n'ont pas de versions.<\/b>. Les hubs ressemblent beaucoup aux tables de type ID-map, utilis\u00e9es dans certains syst\u00e8mes pour g\u00e9n\u00e9rer des surrogats, cependant, il est recommand\u00e9 d'utiliser un hachage de l'ensemble des cl\u00e9s m\u00e9tiers comme surrogat dans le Data Vault plut\u00f4t qu'une s\u00e9quence enti\u00e8re. Cette approche simplifie le chargement des relations et des attributs des sources (il n'est pas n\u00e9cessaire de se joindre au hub pour obtenir le surrogat, il suffit de calculer le hachage de la cl\u00e9 naturelle), mais peut provoquer d'autres probl\u00e8mes (par exemple, li\u00e9s aux collisions, \u00e0 la casse et aux caract\u00e8res non imprimables dans les cl\u00e9s de cha\u00eene, etc.), ce qui fait qu'elle n'est pas universellement adopt\u00e9e.<\/p>\n<p>Tous les autres attributs des entit\u00e9s sont stock\u00e9s dans des tables sp\u00e9ciales, appel\u00e9es <b>Satellites (Satellit)<\/b>. Un hub peut avoir plusieurs satellites, stockant diff\u00e9rents ensembles d'attributs.<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/e145f211b8cfb51894e6e1789991e1cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa distribution des attributs entre les satellites se fait selon le principe de <b>changement conjoint<\/b> \u2014 un satellite peut contenir des attributs non versionn\u00e9s (par exemple, la date de naissance et le SNILS pour les personnes physiques), un autre \u2014 des attributs versionn\u00e9s rarement modifi\u00e9s (par exemple, le nom de famille et le num\u00e9ro de passeport), un troisi\u00e8me \u2014 des attributs souvent modifi\u00e9s (par exemple, l'adresse de livraison, cat\u00e9gorie, date de derni\u00e8re commande, etc.). La version est g\u00e9r\u00e9e au niveau de chaque satellite, et non de l'entit\u00e9 dans son ensemble, c'est pourquoi il est judicieux de r\u00e9partir les attributs de mani\u00e8re \u00e0 r\u00e9duire au minimum l'intersection des versions au sein d'un m\u00eame satellite (ce qui r\u00e9duit le nombre total de versions stock\u00e9es). <\/p>\n<p>De plus, pour optimiser le processus de chargement des donn\u00e9es, des attributs provenant de diff\u00e9rentes sources sont souvent extraits dans des satellites distincts.<\/p>\n<p>Les satellites sont li\u00e9s au hub par <b>une cl\u00e9 \u00e9trang\u00e8re<\/b> (ce qui correspond \u00e0 une cardinalit\u00e9 de 1 \u00e0 plusieurs). Cela signifie que des valeurs multiples d'attributs (par exemple, plusieurs num\u00e9ros de t\u00e9l\u00e9phone pour un client) sont prises en charge par cette architecture \u201cpar d\u00e9faut\u201d.<\/p>\n<p>Dans <b>Le mod\u00e8le d'ancrage (Anchor Model)<\/b> les tables stockant les cl\u00e9s sont appel\u00e9es <b>Ancres (Anchor)<\/b>. Elles stockent : <\/p>\n<ul>\n<li><b>Uniquement des cl\u00e9s surrogates<\/b><\/li>\n<li>Lien vers la source<\/li>\n<li>Date d'ajout de l'enregistrement.<\/li>\n<\/ul>\n<p>\nLes cl\u00e9s naturelles, du point de vue du mod\u00e8le d'ancrage, sont consid\u00e9r\u00e9es comme <b>des attributs ordinaires<\/b>. Cette option peut sembler plus complexe \u00e0 comprendre, mais elle offre beaucoup plus de libert\u00e9 pour identifier un objet.<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/0bf941581fd1177eda228d4429cf69db.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPar exemple, si les donn\u00e9es concernant une m\u00eame entit\u00e9 peuvent provenir de diff\u00e9rents syst\u00e8mes, chacun utilisant sa propre cl\u00e9 naturelle. Dans le Data Vault, cela peut conduire \u00e0 des constructions assez encombrantes avec plusieurs hubs (un par source + une version master unificatrice), tandis que dans le mod\u00e8le Ancre, la cl\u00e9 naturelle de chaque source est plac\u00e9e dans son propre attribut et peut \u00eatre utilis\u00e9e lors du chargement ind\u00e9pendamment des autres. <\/p>\n<p>Mais il y a un d\u00e9tail sournois : si des attributs d'une m\u00eame entit\u00e9 sont regroup\u00e9s \u00e0 partir de diff\u00e9rents syst\u00e8mes, il y a de fortes chances qu'il existe certaines <b>r\u00e8gles de \"fusion\"<\/b>, selon lesquelles le syst\u00e8me doit comprendre que les enregistrements provenant de diff\u00e9rentes sources correspondent \u00e0 une m\u00eame instance de l'entit\u00e9. <\/p>\n<p>Dans <b>Data Vault<\/b> Ces r\u00e8gles d\u00e9termineront probablement la formation <b>d'un \"hub de substitution\" de l'entit\u00e9 master<\/b> et n'influenceront pas les hubs qui stockent les cl\u00e9s naturelles des sources et leurs attributs d'origine. Si \u00e0 un moment donn\u00e9 les r\u00e8gles de fusion changent (ou si une mise \u00e0 jour des attributs selon lesquels elle est r\u00e9alis\u00e9e arrive), il suffira de reformer les hubs de substitution.<\/p>\n<p>Dans <b>Dans le mod\u00e8le Ancre<\/b> , une telle entit\u00e9 sera probablement stock\u00e9e dans <b>une seule ancre<\/b>. Cela signifie que tous les attributs, peu importe leur source, seront li\u00e9s \u00e0 un m\u00eame substitut. S\u00e9parer des enregistrements fusionn\u00e9s par erreur et suivre la pertinence de la fusion dans un tel syst\u00e8me pourrait s'av\u00e9rer beaucoup plus difficile, surtout si les r\u00e8gles sont assez complexes et changent fr\u00e9quemment, et qu'un m\u00eame attribut peut provenir de diff\u00e9rentes sources (bien que cela soit pr\u00e9cis\u00e9ment possible, car chaque version de l'attribut conserve un lien avec sa source).<\/p>\n<p>Quoi qu'il en soit, si votre syst\u00e8me envisage la mise en \u0153uvre de la fonctionnalit\u00e9 <b>de d\u00e9-duplication, de fusion d'enregistrements et d'autres \u00e9l\u00e9ments MDM<\/b>, il convient de pr\u00eater une attention particuli\u00e8re aux aspects de stockage des cl\u00e9s naturelles dans des m\u00e9thodologies flexibles. Il est probable qu'une construction plus encombrante de Data Vault s'av\u00e8re soudainement plus s\u00fbre en ce qui concerne les erreurs de fusion.<\/p>\n<p><b>Le mod\u00e8le Ancre<\/b> pr\u00e9voit \u00e9galement un type d'objet suppl\u00e9mentaire appel\u00e9 <b>N\u0153ud (Knot)<\/b> qui est en fait un type sp\u00e9cial <b>r\u00e9duit d'ancre.<\/b>, qui peut contenir un seul attribut. Les n\u0153uds sont suppos\u00e9s \u00eatre utilis\u00e9s pour stocker des annuaires plats (par exemple, le sexe, l'\u00e9tat civil, la cat\u00e9gorie de service \u00e0 la client\u00e8le, etc.). Contrairement \u00e0 l'Ancre, le N\u0153ud <b>n'a pas de tables d'attributs li\u00e9es<\/b>, et son unique attribut (le nom) est toujours stock\u00e9 dans une seule table avec la cl\u00e9. Les n\u0153uds sont li\u00e9s aux Ancres par des tables de liaison (Tie) de la m\u00eame mani\u00e8re que les ancres entre elles.<\/p>\n<p>Il n'y a pas d'avis unanime sur l'utilisation des N\u0153uds. Par exemple, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/azathot\/\">Nikolai Golov<\/a><\/noindex>, qui promeut activement l'application du mod\u00e8le d'Ancre en Russie, estime (non sans raison) qu'il est difficile d'affirmer avec certitude qu'un annuaire <b>ont toujours<\/b> sera statique et unidimensionnel, il est donc pr\u00e9f\u00e9rable d'utiliser directement une vraie Ancre pour tous les objets.<\/p>\n<p>Une autre diff\u00e9rence importante entre Data Vault et le mod\u00e8le d'Ancre r\u00e9side dans la pr\u00e9sence <b>d'attributs pour les relations.<\/b>:<\/p>\n<p>Dans <b>Data Vault<\/b> Les relations sont des objets \u00e0 part enti\u00e8re, tout comme les Hubs, et peuvent avoir <b>leurs propres attributs.<\/b>. Il y a <b>Dans le mod\u00e8le Ancre<\/b> Les relations ne sont utilis\u00e9es que pour relier des Ancres et <b>ne peuvent pas avoir leurs propres attributs.<\/b>. Cette distinction donne lieu \u00e0 des approches de mod\u00e9lisation tr\u00e8s diff\u00e9rentes <b>des faits,<\/b>ce dont nous parlerons ensuite.<\/p>\n<h3>Le stockage des faits<\/h3>\n<p>\nJusqu'\u00e0 pr\u00e9sent, nous avons principalement parl\u00e9 de la mod\u00e9lisation des dimensions. Les faits sont un peu moins clairs.<\/p>\n<p>Dans <b>Data Vault<\/b> objet typique de stockage des faits \u2014<b> la Relation (Link)<\/b>, dans les Satellites desquels sont accumul\u00e9s des indicateurs tangibles.<\/p>\n<p>Cette approche semble intuitivement compr\u00e9hensible. Elle donne un acc\u00e8s facile aux indicateurs analys\u00e9s et ressemble dans l'ensemble \u00e0 une table de faits traditionnelle (seulement les indicateurs ne sont pas stock\u00e9s dans la table elle-m\u00eame, mais dans la 'voisine'). Mais il y a des inconv\u00e9nients : l'une des modifications typiques du mod\u00e8le \u2014 l'extension de la cl\u00e9 du fait \u2014 n\u00e9cessite <b>l'ajout d'une nouvelle cl\u00e9 \u00e9trang\u00e8re dans le Link.<\/b>Cela, \u00e0 son tour, casse la modularit\u00e9 et pourrait n\u00e9cessiter des modifications d'autres objets.<\/p>\n<p>Dans <b>Dans le mod\u00e8le Ancre<\/b> La Relation ne peut pas avoir ses propres attributs, donc cette approche ne fonctionnera pas \u2014 absolument tous les attributs et indicateurs doivent \u00eatre li\u00e9s \u00e0 une Ancre sp\u00e9cifique. La conclusion est simple \u2014 <b>chaque fait a \u00e9galement besoin de sa propre ancre.<\/b>. Pour certaines choses que nous avons appris \u00e0 consid\u00e9rer comme des faits, cela peut sembler naturel \u2014 par exemple, le fait d'acheter se r\u00e9sume bien \u00e0 un objet \u201ccommande\u201d ou \u201cre\u00e7u\u201d, la visite d'un site web \u2014 \u00e0 une session, etc. Mais il existe aussi des faits pour lesquels il n'est pas si simple de trouver un \u201cobjet-support\u201d naturel \u2014 par exemple, les stocks de produits en entrep\u00f4t au d\u00e9but de chaque jour. <\/p>\n<p>En cons\u00e9quence, il n\u2019y a pas de probl\u00e8mes de modularit\u00e9 lors de l\u2019\u00e9largissement de la cl\u00e9 de fait dans le mod\u00e8le d\u2019ancrage (il suffit d\u2019ajouter une nouvelle relation \u00e0 l\u2019ancre correspondante), mais la conception du mod\u00e8le pour afficher les faits est moins \u00e9vidente, des ancres \u201cartificielles\u201d peuvent appara\u00eetre, repr\u00e9sentant le mod\u00e8le objet de l\u2019entreprise de mani\u00e8re moins \u00e9vidente.<\/p>\n<h3>Comment atteint-on la flexibilit\u00e9<\/h3>\n<p>\nLa structure obtenue dans les deux cas contient <b>consid\u00e9rablement plus de tables<\/b>, que la mesure traditionnelle. Mais elle peut occuper <b>consid\u00e9rablement moins d'espace disque<\/b> avec le m\u00eame ensemble d'attributs versionnels que la mesure traditionnelle. Pas de magie ici, bien s\u00fbr \u2014 il s'agit simplement de normalisation. En r\u00e9partissant les attributs sur des satellites (dans le Data Vault) ou sur des tables distinctes (mod\u00e8le d'ancrage), nous r\u00e9duisons (ou \u00e9liminons compl\u00e8tement) <b>la duplication des valeurs de certains attributs lors du changement d'autres<\/b>.<\/p>\n<p>Pour <b>Data Vault<\/b> le gain d\u00e9pendra de la r\u00e9partition des attributs sur les satellites, et pour <b>Dans le mod\u00e8le Ancre<\/b> \u2014 sera pratiquement directement proportionnel au nombre moyen de versions de l\u2019objet de mesure.<\/p>\n<p>Cependant, le gain en espace occup\u00e9 est un avantage important, mais ce n'est pas le principal avantage d'un stockage distinct des attributs. Avec le stockage distinct des relations, cette approche rend le entrep\u00f4t <b>une construction modulaire<\/b>. Cela signifie que l'ajout d'attributs individuels, ainsi que de nouvelles domaines th\u00e9matiques dans un tel mod\u00e8le, se pr\u00e9sente comme <b>un surajout<\/b> au jeu d'objets existants sans les modifier. Et c'est pr\u00e9cis\u00e9ment ce qui rend les m\u00e9thodologies d\u00e9crites flexibles.<\/p>\n<p>Cela rappelle \u00e9galement le passage de la production \u00e0 l'unit\u00e9 \u00e0 la production de masse \u2014 si, dans l'approche traditionnelle, chaque table du mod\u00e8le est unique et n\u00e9cessite une attention particuli\u00e8re, dans les m\u00e9thodologies flexibles \u2014 il s'agit d\u00e9j\u00e0 d'un ensemble de \u201cd\u00e9tails\u201d standard. D'un c\u00f4t\u00e9, il y a plus de tables, les processus de chargement et de r\u00e9cup\u00e9ration des donn\u00e9es doivent sembler plus complexes. D'un autre c\u00f4t\u00e9 \u2014 ils deviennent <b>standardis\u00e9s<\/b>. Ce qui signifie qu'ils peuvent \u00eatre <b>automatis\u00e9s et g\u00e9r\u00e9s par des m\u00e9tadonn\u00e9es<\/b>. La question \u00ab comment allons-nous nous organiser ? \u00bb, dont la r\u00e9ponse pouvait repr\u00e9senter une part importante des travaux de conception des modifications, ne se pose plus (tout comme la question de l'impact d'un changement de mod\u00e8le sur les processus en cours). <\/p>\n<p>Cela ne signifie pas que les analystes ne sont pas du tout n\u00e9cessaires dans un tel syst\u00e8me : quelqu'un doit encore travailler sur un ensemble d'objets avec des attributs et comprendre d'o\u00f9 et comment tout cela doit \u00eatre charg\u00e9. Mais le volume de travail, ainsi que la probabilit\u00e9 et le co\u00fbt d'erreur, diminuent consid\u00e9rablement. \u00c0 la fois lors de l'analyse et lors du d\u00e9veloppement de l'ETL, qui peut dans une large mesure se r\u00e9sumer \u00e0 l'\u00e9dition de m\u00e9tadonn\u00e9es. <\/p>\n<h3>Le c\u00f4t\u00e9 obscur<\/h3>\n<p>\nTout ce qui pr\u00e9c\u00e8de rend les deux approches r\u00e9ellement flexibles, technologiques et adapt\u00e9es \u00e0 des modifications it\u00e9ratives. Bien s\u00fbr, il y a aussi un \u00ab pot de miel \u00bb dont vous, je pense, vous doutez d\u00e9j\u00e0.<\/p>\n<p>La d\u00e9composition des donn\u00e9es, qui sous-tend la modularit\u00e9 des architectures flexibles, entra\u00eene une augmentation du nombre de tables et, par cons\u00e9quent, <b>de frais g\u00e9n\u00e9raux<\/b> pour les jointures lors des s\u00e9lections. Pour obtenir simplement tous les attributs d'une dimension, un seul select suffit dans un entrep\u00f4t classique, tandis qu'une architecture flexible n\u00e9cessitera une s\u00e9rie de jointures. En effet, si pour les rapports toutes ces jointures peuvent \u00eatre \u00e9crites \u00e0 l'avance, les analystes habitu\u00e9s \u00e0 \u00e9crire du SQL \u00e0 la main souffriront deux fois plus.<\/p>\n<p>Il existe plusieurs faits qui facilitent cette situation :<\/p>\n<p><b>Lors du traitement de grandes dimensions, presque tous ses attributs ne sont jamais utilis\u00e9s simultan\u00e9ment.<\/b> Cela signifie que le nombre de jointures peut \u00eatre inf\u00e9rieur \u00e0 ce qu'il semble au premier coup d'\u0153il sur le mod\u00e8le. Dans le Data Vault, on peut \u00e9galement prendre en compte la fr\u00e9quence estim\u00e9e de l'utilisation conjointe lors de la r\u00e9partition des attributs dans les satellites. Les Hubs ou Ancrages eux-m\u00eames sont principalement n\u00e9cessaires pour la g\u00e9n\u00e9ration et le mappage des substituts lors de la charge, et sont rarement utilis\u00e9s dans les requ\u00eates (surtout en ce qui concerne les Ancrages).<\/p>\n<p><b>Toutes les jointures sont bas\u00e9es sur des cl\u00e9s.<\/b> De plus, un moyen de stockage des donn\u00e9es plus \u00ab compress\u00e9 \u00bb r\u00e9duit les frais g\u00e9n\u00e9raux li\u00e9s \u00e0 l'analyse des tables lorsqu'elle est n\u00e9cessaire (par exemple lors du filtrage par valeur d'attribut). Cela peut amener \u00e0 ce qu'une extraction d'une base normalis\u00e9e avec plusieurs jointures soit m\u00eame plus rapide que le scan d'une seule dimension lourde avec de nombreuses versions par ligne.<\/p>\n<p>Par exemple, dans <noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/wp-content\/uploads\/2011\/05\/Anchor-Modeling.pdf\">celui-ci <\/a><\/noindex> cet article, il y a un test comparatif d\u00e9taill\u00e9 des performances du mod\u00e8le d'ancrage avec extraction d'une seule table.<\/p>\n<p><b>Beaucoup d\u00e9pend du moteur.<\/b> De nombreuses plateformes modernes disposent de m\u00e9canismes d'optimisation internes pour les jointures. Par exemple, MS SQL et Oracle sont capables de \u00ab sauter \u00bb les jointures sur des tables si leurs donn\u00e9es ne sont utilis\u00e9es nulle part ailleurs, sauf dans d'autres jointures, et n'affectent pas l'extraction finale (\u00e9limination des tables\/jointures), tandis que MPP Vertica, d'apr\u00e8s <noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/wp-content\/uploads\/2011\/05\/Big_Data_Normalization.pdf\">l'exp\u00e9rience de coll\u00e8gues d'Avito<\/a><\/noindex>, s'est av\u00e9r\u00e9 \u00eatre un excellent moteur pour le mod\u00e8le d'ancrage, en tenant compte de certaines optimisations manuelles du plan de requ\u00eate. D'un autre c\u00f4t\u00e9, stocker le mod\u00e8le d'ancrage, par exemple, sur Click House, qui a un support limit\u00e9 des jointures, ne semble pas \u00eatre une tr\u00e8s bonne id\u00e9e.<\/p>\n<p>De plus, pour les deux architectures, il existe <b>des techniques sp\u00e9ciales<\/b>, facilitant l'acc\u00e8s aux donn\u00e9es (tant du point de vue des performances des requ\u00eates que pour les utilisateurs finaux). Par exemple, <b>les tables Point-In-Time<\/b> dans Data Vault ou <b>des fonctions de table sp\u00e9ciales<\/b> dans le mod\u00e8le d'ancrage.<\/p>\n<h2>Au total<\/h2>\n<p>\nL'essence des architectures flexibles examin\u00e9es r\u00e9side dans la modularit\u00e9 de leur \"construction\". <\/p>\n<p>C'est pr\u00e9cis\u00e9ment cette propri\u00e9t\u00e9 qui permet :<\/p>\n<ul>\n<li>Apr\u00e8s une pr\u00e9paration initiale li\u00e9e au d\u00e9ploiement des m\u00e9tadonn\u00e9es et \u00e0 l'\u00e9criture des algorithmes ETL de base, <b>de fournir rapidement au client le premier r\u00e9sultat<\/b> sous la forme de quelques rapports contenant des donn\u00e9es de quelques objets sources. Il n'est pas n\u00e9cessaire de penser compl\u00e8tement (m\u00eame \u00e0 un niveau sup\u00e9rieur) \u00e0 tout le mod\u00e8le objet pour cela.<\/li>\n<li>Le mod\u00e8le de donn\u00e9es peut commencer \u00e0 fonctionner (et \u00e0 apporter des b\u00e9n\u00e9fices) avec seulement 2 \u00e0 3 objets, puis <b>se d\u00e9velopper progressivement<\/b> (par rapport au mod\u00e8le d'ancrage, Nikolai <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/322510\/\">a utilis\u00e9 <\/a><\/noindex>une belle comparaison avec le myc\u00e9lium).<\/li>\n<li>La plupart des am\u00e9liorations, y compris l'expansion du domaine th\u00e9matique et l'ajout de nouvelles sources <b>n'affectent pas la fonctionnalit\u00e9 existante et ne risquent pas de casser quelque chose qui fonctionne d\u00e9j\u00e0.<\/b>.<\/li>\n<li>Gr\u00e2ce \u00e0 la d\u00e9composition en \u00e9l\u00e9ments standards, les processus ETL dans de tels syst\u00e8mes ont une apparence uniforme, leur r\u00e9daction peut \u00eatre automatis\u00e9e et, en fin de compte, <b>automatis\u00e9e<\/b>.<\/li>\n<\/ul>\n<p>\nLe prix de cette flexibilit\u00e9 est <b>la performance<\/b>. Cela ne signifie pas qu'il est impossible d'atteindre une performance acceptable avec de tels mod\u00e8les. La plupart du temps, il peut simplement vous falloir plus d'efforts et d'attention aux d\u00e9tails pour atteindre les m\u00e9triques souhait\u00e9es.<\/p>\n<h2>Applications<\/h2>\n<p><\/p>\n<h4>Types d'entit\u00e9s <b>Data Vault<\/b><\/h4>\n<p>\n<img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/6bbaee505587152d7e5c11b2889bf25a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn savoir plus sur le Data Vault :<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/danlinstedt.com\/\">Le site de 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\">Tout sur le Data Vault en russe<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348188\/\">Sur le Data Vault sur Habr\u00e9<\/a><\/noindex><\/p>\n<h4>Types d'entit\u00e9s <b>Anchor Model<\/b><\/h4>\n<p>\n<img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/d518f01e6a5c241e9e73d1ea0210c557.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn savoir plus sur le mod\u00e8le d'ancrage :<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/\">Le site des cr\u00e9ateurs du mod\u00e8le d'ancrage<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/322510\/\">Article sur l'exp\u00e9rience de mise en \u0153uvre du mod\u00e8le d'ancrage chez Avito<\/a><\/noindex><\/p>\n<p>Tableau r\u00e9capitulatif des caract\u00e9ristiques communes et des diff\u00e9rences des approches examin\u00e9es :<\/p>\n<p><img decoding=\"async\" alt=\"Vue d&#039;ensemble des m\u00e9thodologies flexibles de conception de DWH\" src=\"\/wp-content\/uploads\/2020\/08\/807717245fd874ab141031fc64e584fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>Source : <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 - 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\/fr\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Pr\u00e9sentation des m\u00e9thodologies de conception flexibles DWH | ProHoster","description":"Le d\u00e9veloppement d'un entrep\u00f4t est une t\u00e2che longue et s\u00e9rieuse.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/92015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=92015"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/92015\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/92016"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=92015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=92015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=92015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}