DM – Data Mesh : Définition, Traduction et Origines

Accrochez-vous : le sujet de cet article va être un peu complexe (en tout cas plus que si on avait parlé de Direct Message). Car le “DM” que je vous propose de décortiquer ensemble, c’est le concept de Data Mesh. Il s’agit d’une façon d’organiser et d’architecturer les données en entreprise. Et autant vous dire que c’est un enjeu d’avenir ! Rassurez-vous : nous n’allons pas (trop) rentrer dans la technique.

DM - Data Mesh

Découvrez ce qui se cache derrière l’acronyme DM

Data Mesh : définition

Le Data Mesh (DM) désigne un modèle d’écosystème de données qui sont classées en fonction de différents domaines d’activité. Son but : permettre à des équipes interfonctionnelles (et fonctionnelles tout court !) de pouvoir gérer, utiliser et exploiter la data dans chaque sous-domaine.

Un Data Mesh efficace est capable de générer sur demande de véritables “produits” de données. Ces produits vont éclairer les prises de décisions dans les entreprises en fonction d’informations aussi précises qu’utiles. Ils prennent la forme d’architectures en microservices (pour la Data).

Qu’est-ce qu’une architecture en microservices ?

Le concept d’architecture en microservices est central dans le Data Mesh. L’idée derrière cette notion technique est de construire une base de données avec plusieurs sous-services (ou sous-domaines) indépendants plutôt qu’une seule grande base (souvent appelée monolith).

Ainsi, en Data Mesh, au lieu d’accéder à la totalité des données via une immense base de datas, chaque service (ou domaine métier) a sa propre base de données, beaucoup plus légère et adaptée à ses besoins. Les liens entre les microservices restent possibles. Ils sont essentiellement gérés par des API.

Quelle est la traduction de Data Mesh ?

Littéralement, Data Mesh se traduit en français par maillage de données. On peut aussi le traduire par structure de données. Dans tous les cas, l’expression désigne la façon dont est stockée et architecturée la data pour répondre à des besoins spécifiques à chaque service ou domaine de l’entreprise.

Le maillage de données est-il le futur du data management ?

L’enjeu de stocker les données ne date pas d’hier. Dès les années 1980, les entreprises ont eu besoin d’un espace pour entreposer la data en provenance de sources toujours plus nombreuses. C’est là tout le propos du Data Warehouse, ou entrepôt de données (EDD).

Mais le véritable enjeu pour les entreprises derrière le fait de simplement stocker de la donnée, c’est de pouvoir l’exploiter efficacement dans leur business. Dès les années 2000, les EDD sont donc devenus les pivots essentiels de la BI (Business Intelligence). 

Pour utiliser la data à son plein potentiel, encore faut-il qu’elle soit correctement rangée. C’est pourquoi le développement d’architectures de données a fait son apparition (avec les Data Lakes par exemple). Le Data Mesh, ou organisation des données en maillage, est l’évolution de ce processus. Depuis 2019, il représente la dernière évolution marquante concernant les données d’entreprise.

Si vous voulez creuser le fonctionnement technique d’un Data Mesh, n’hésitez pas à lire cet article du site DataScientest.

Data Mart VS Data Mesh

Ces deux expressions peuvent générer des confusions, tant elles sont proches. Le Data Mart (ou DataMart) peut être une sous-partie d’un entrepôt de données plus complet. Il est limité à un type bien précis de data. En entreprise, les données contenues dans un Data Mart sont généralement spécialisées sur un métier particulier (DataMarts pour la fonction RH par exemple).

La différence entre Data Mart et Data Mesh ? Le Data Mesh va plus loin encore au niveau du classement des données sous forme d’architecture décentralisée (organisée en microservices, rappelons-le). Autrement dit, avec le DM, chaque service possède une base de données exploitable en toute autonomie. 

Data Lake VS Data Mesh

Impossible de parler de Big Data sans évoquer les Data Lakes. Par opposition à l’organisation structurée des DM, les Data Lakes prennent la forme de vastes bases de données brutes (comme un lac profond !). La data reste dans ce cas sous sa forme d’origine.

La différence entre Data Lake et Data Mesh réside donc dans la façon de stocker, traiter et architecturer les données. Cela dit, les Data Lakehouses (mélange entre Data Lakes et Data Warehouses) viennent combler en partie ces différences en venant structurer la data (même si on est encore loin de l’architecture en microservices propre aux Data Meshs). 

Comme vous le voyez à travers cet article, les outils de gestion de la Donnée Client sont en évolution permanente. Assurez-vous d’être prêt à vous adapter à ces changements pour rester compétitifs : oui, exploiter efficacement la data est la clé pour sortir du lot !

D’ailleurs, si vous voulez mettre le paquet sur vos données clients, rien de tel que la Customer Data Platform (CDP). La CDP est l’outil idéal pour avoir des données unifiées et exploitables. Ne manquez pas notre article dédié à la Customer Data Platform pour tout savoir à son sujet.

Partager :
Antoine Coubray a créé CustUp pour aider les entreprises à optimiser leur data, leur Relation Client, et plus globalement leur

Antoine Coubray a créé CustUp pour aider les entreprises à optimiser leur data, leur Relation Client, et plus globalement leur MarTech. Dans cette série d’articles dédiés aux acronymes, il partage son retour d’expérience sur ces sujets.

[custup_nom_silo]
[custup_form_optinmonster]
[custup_form_optinmonster]
[custup_form_blog_inline_optinmonster]
<script type="text/javascript"> jQuery(document).ready(function( $ ) { var captcha1vYsz = grecaptcha.render( 'captcha-1vYsz', { 'sitekey' : '6LdT1-4gAAAAAO9Enn6scQv9Sg7vEHfEmTzlKqlw', 'theme' : 'light' }); var dj_envoyer_inscription = true; jQuery(document).delegate( '#dj_envoyer_inscription-1vYsz', 'click', function(){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var email = jQuery('#dj_form_optinmonster-1vYsz input[name="email"]').val(); var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); data.append( "recaptcha_response", jQuery("#dj_form_optinmonster-1vYsz .g-recaptcha-response").val()); jQuery("#dj_form_optinmonster-1vYsz .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-1vYsz .panel-primary").css('display', 'block'); jQuery("#dj_form_optinmonster-1vYsz .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_optinmonster-1vYsz .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-1vYsz .panel-danger span").html(result.alerte); jQuery("#dj_form_optinmonster-1vYsz .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_optinmonster-1vYsz .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-1vYsz .panel-success span").html(result.message); jQuery("#dj_form_optinmonster-1vYsz .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Blog-Inline", "eventAction": "clic", "eventLabel": "https://www.custup.com/dm-data-mesh-definition-traduction-origines/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; grecaptcha.reset(captcha1vYsz); }, error: function(errorThrown){ dj_envoyer_inscription = true; grecaptcha.reset(captcha1vYsz); } }); } return false; }); }); </script> <div id="dj_form_optinmonster-1vYsz" class="form_inline"> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group pull-left"> <input class="form-control form-inline" type="text" id="dj_email" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group optin-recaptcha pull-left"> <div id="captcha-1vYsz"></div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group envoyer text-center pull-left"> <button id="dj_envoyer_inscription-1vYsz" class="dj_envoyer_inscription" type="submit">Je m'abonne !</button> </div> </div>
[le Nom du Silo]
[le Nom du Silo]
[custup_icon]
<img src="https://www.custup.com/wp-content/themes/custup/public/img/icon.png" alt="Merci pour votre visite" class="skip-lazy" width="28" height="27"/>
[custup_form_exit]
<script type="text/javascript"> jQuery(document).ready(function( $ ) { var captchaG1kIR = grecaptcha.render( 'captcha-G1kIR', { 'sitekey' : '6LdT1-4gAAAAAO9Enn6scQv9Sg7vEHfEmTzlKqlw', 'theme' : 'light' }); var dj_envoyer_inscription = true; var email = ""; jQuery(document).delegate( '#emailG1kIR', 'change', function(){ email = jQuery(this).val(); }); jQuery(document).delegate( '#dj_envoyer_inscription-exit-G1kIR', 'click', function(){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); data.append( "exit", 1 ); data.append( "recaptcha_response", jQuery("#dj_form_optinmonster-exit-G1kIR .g-recaptcha-response").val()); jQuery("#dj_form_optinmonster-exit-G1kIR .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-exit-G1kIR .panel-primary").css('display', 'block'); jQuery("#dj_form_optinmonster-exit-G1kIR .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_optinmonster-exit-G1kIR .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-exit-G1kIR .panel-danger span").html(result.alerte); jQuery("#dj_form_optinmonster-exit-G1kIR .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_optinmonster-exit-G1kIR .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-exit-G1kIR .panel-success span").html(result.message); jQuery("#dj_form_optinmonster-exit-G1kIR .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Exit", "eventAction": "clic", "eventLabel": "https://www.custup.com/dm-data-mesh-definition-traduction-origines/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; grecaptcha.reset(captchaG1kIR); }, error: function(errorThrown){ dj_envoyer_inscription = true; grecaptcha.reset(captchaG1kIR); } }); } return false; }); }); </script> <div id="dj_form_optinmonster-exit-G1kIR" class="form_inline popin-exit"> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group pull-left"> <input class="form-control" type="text" id="emailG1kIR" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group optin-recaptcha pull-left"> <div id="captcha-G1kIR"></div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group envoyer text-center pull-left"> <button id="dj_envoyer_inscription-exit-G1kIR" class="dj_envoyer_inscription" type="submit">S'inscrire !</button> </div> </div>
[custup_scroll_nom_silo]
[custup_form_silo_scroll_optinmonster]
<script type="text/javascript"> var email = ""; jQuery(document).ready(function( $ ) { var captchaRK0Ky = grecaptcha.render( 'captcha-RK0Ky', { 'sitekey' : '6LdT1-4gAAAAAO9Enn6scQv9Sg7vEHfEmTzlKqlw', 'theme' : 'light' }); var dj_envoyer_inscription = true; jQuery(document).delegate( '#emailRK0Ky', 'change', function(){ email = jQuery(this).val(); }); jQuery(document).delegate( '#dj_envoyer_inscription-RK0Ky', 'click', function(e){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); data.append( "id_article", 25974); data.append( "recaptcha_response", jQuery("#dj_form_optinmonster-RK0Ky .g-recaptcha-response").val()); jQuery("#dj_form_optinmonster-RK0Ky .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-RK0Ky .panel-primary").css('display', 'block'); jQuery("#dj_form_optinmonster-RK0Ky .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_optinmonster-RK0Ky .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-RK0Ky .panel-danger span").html(result.alerte); jQuery("#dj_form_optinmonster-RK0Ky .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_optinmonster-RK0Ky .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-RK0Ky .panel-success span").html(result.message); jQuery("#dj_form_optinmonster-RK0Ky .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Silo-XXX-Scroll", "eventAction": "clic", "eventLabel": "https://www.custup.com/dm-data-mesh-definition-traduction-origines/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; grecaptcha.reset(captchaRK0Ky); }, error: function(errorThrown){ dj_envoyer_inscription = true; grecaptcha.reset(captchaRK0Ky); } }); } return false; }); }); </script> <div id="dj_form_optinmonster-RK0Ky"> <form> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group pull-left"> <input class="form-control" type="text" id="emailRK0Ky" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group optin-recaptcha pull-left"> <div id="captcha-RK0Ky"></div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group envoyer text-center pull-left"> <button id="dj_envoyer_inscription-RK0Ky" class="dj_envoyer_inscription" value="xx" type="submit">S'inscrire</button> </div> </form> </div>
[custup_count_abonnes_liste_mailchimp]
4464
[custup_form_horizontal_optinmonster]
<script type="text/javascript"> var email = ""; jQuery(document).ready(function( $ ) { var captchasgHkT = grecaptcha.render( 'captcha-sgHkT', { 'sitekey' : '6LdT1-4gAAAAAO9Enn6scQv9Sg7vEHfEmTzlKqlw', 'theme' : 'light' }); var dj_envoyer_inscription = true; jQuery(document).delegate( '#emailsgHkT', 'change', function(){ email = jQuery(this).val(); }); jQuery(document).delegate( '#dj_envoyer_inscription-sgHkT', 'click', function(){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); data.append( "recaptcha_response", jQuery("#dj_form_horizontal_optinmonster-sgHkT .g-recaptcha-response").val()); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel").css('display', 'none'); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel-primary").css('display', 'block'); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel").css('display', 'none'); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel-danger span").html(result.alerte); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel").css('display', 'none'); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel-success span").html(result.message); jQuery("#dj_form_horizontal_optinmonster-sgHkT .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Blog-Floating-Bar", "eventAction": "clic", "eventLabel": "https://www.custup.com/dm-data-mesh-definition-traduction-origines/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; grecaptcha.reset(captchasgHkT); }, error: function(errorThrown){ dj_envoyer_inscription = true; grecaptcha.reset(captchasgHkT); } }); } return false; }); }); </script> <div id="dj_form_horizontal_optinmonster-sgHkT" class="dj_form_horizontal_optinmonster"> <input type="hidden" name="recaptcha_response" value=""> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group dj_email_content pull-left"> <input class="form-control" type="text" id="emailsgHkT" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group text-center dj_email_envoyer pull-left"> <button id="dj_envoyer_inscription-sgHkT" class="dj_envoyer_inscription" type="submit">Valider</button> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group optin-recaptcha pull-left"> <div id="captcha-sgHkT"></div> </div> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> </div>