Stockage de données http://toolbox.hub-charleroi.be/ en TSorage : une plateforme de gestion de données (I)IoT http://toolbox.hub-charleroi.be/fiche/tsorage-une-plateforme-de-gestion-de-donnees-iiot <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--hover.html.twig x field--node--title.html.twig * field--node--hover.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--node--title.html.twig' --> <span class="field field--name-title field--type-string field--label-hidden">TSorage : une plateforme de gestion de données (I)IoT </span> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--hover.html.twig * field--node--field-tags.html.twig * field--node--hover.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/Cloud" hreflang="en">Cloud Computing</a></div> <div class="field__item"><a href="/Gestion%20de%20donn%C3%A9es" hreflang="en">Gestion de données</a></div> <div class="field__item"><a href="/IoT" hreflang="en">IoT</a></div> <div class="field__item"><a href="/Logiciel" hreflang="en">Logiciel</a></div> <div class="field__item"><a href="/Stockagededonn%C3%A9es" hreflang="en">Stockage de données</a></div> </div> </div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--hover.html.twig x field--node--uid.html.twig * field--node--hover.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--node--uid.html.twig' --> <span class="field field--name-uid field--type-entity-reference field--label-hidden"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/user/username.html.twig' --> <span lang="" about="/user/5" typeof="schema:Person" property="schema:name" datatype="">laurie</span> <!-- END OUTPUT from 'core/themes/classy/templates/user/username.html.twig' --> </span> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--hover.html.twig x field--node--created.html.twig * field--node--hover.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--node--created.html.twig' --> <span class="field field--name-created field--type-created field--label-hidden">Fri, 11/13/2020 - 11:19</span> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-pdf--hover.html.twig * field--node--field-pdf.html.twig * field--node--hover.html.twig * field--field-pdf.html.twig * field--file.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <div class="field field--name-field-pdf field--type-file field--label-above"> <div class="field__label">Télécharger le PDF</div> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'file_link' --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/file-link.html.twig' --> <span class="file file--mime-application-pdf file--application-pdf"> <a href="http://toolbox.hub-charleroi.be/sites/default/files/2022-01/fiche%20Tsorage.pdf" type="application/pdf; length=1180546" title="fiche Tsorage.pdf">Fiche TSorage</a></span> <!-- END OUTPUT from 'core/themes/classy/templates/field/file-link.html.twig' --> </div> </div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--hover.html.twig * field--node--body.html.twig * field--node--hover.html.twig * field--body.html.twig x field--text-with-summary.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--text-with-summary.html.twig' --> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div class="field__item"><p dir="ltr">Vous êtes une entreprise à la recherche de technologies fiables, rapides et rentables concernant le déploiement d'applications basées sur des séries chronologiques à grande échelle? TSorage est la solution idéale pour gérer vos flux IoT! </p> <p>Après la description de TSorage et de ses différents atouts, nous évoquons les concepts nécessaires à la compréhension de cette plateforme et expliquons son architecture. Nous terminons en vous présentant un cas d'étude.</p> <h2>Prérequis</h2> <p dir="ltr">Pour la lecture de ce document,</p> <ul dir="ltr"><li> <p>connaissance élémentaire de l’IIoT et de ses enjeux, de Kubernetes, de Cassandra.</p> </li> </ul><p dir="ltr">Pour tester TSorage, </p> <ul><li> <p dir="ltr">un cluster Kubernetes doit être installé, par exemple grâce à <a href="https://kubernetes.io/fr/docs/setup/learning-environment/minikube/">minikube</a>.</p> </li> <li> <p dir="ltr">Maîtrise de HTTP et/ou MQTT, JSON, PromQL, Docker.</p> </li> </ul><h2><img alt="goal" data-entity-type="file" data-entity-uuid="62bbc1fc-7ce5-416e-a0c3-e2f1ae856bd2" height="35" src="/sites/default/files/inline-images/goal2.png" width="35" /> Pour quoi faire? </h2> <p dir="ltr">À l’heure actuelle, les entreprises industrielles font face à une concurrence mondiale de plus en plus agressive. L'Internet industriel des objets (IIoT) est perçu comme une opportunité clé pour renforcer la position de ces entreprises ou pour gagner en compétitivité grâce à une meilleure productivité, à l’amélioration de la qualité des produits et à un meilleur contrôle des processus (voir notre <a href="https://toolbox.hub-charleroi.be/node/28">fiche sur la gestion des réseaux de capteurs</a>).</p> <p>Cependant, la gestion de la vitesse et du volume des données de séries chronologiques fournies par ces IIoT représentent un défi dans lequel la valeur des solutions traditionnelles de gestion des données pour l'industrie tend à diminuer. Le monde industriel recherche des outils et des approches capables de répondre aux nouveaux besoins relatifs à  l'évolutivité, à la disponibilité, au problèmes de réutilisation, d'intégration et de tarification, entre autres.</p> <p>Afin de répondre à ces besoins, nous proposons une solution innovante pour la gestion des séries chronologiques appelée TSorage.</p> <p dir="ltr">TSorage est une plateforme  évolutive et résiliente, qui permet la collecte, l’ingestion, le traitement et le stockage de séries chronologiques (ou séries temporelles) générées par l'IoT (industriel ou non) comme les détecteurs, les sondes et autres capteurs au sens large du terme. </p> <p>Cette plateforme propose une collection de services intégrés pour gérer les séries temporelles, à grande échelle, de tout type, avec un horodatage avec une résolution temporelle d’une milliseconde et avec aussi peu de contraintes techniques que possible. </p> <p>Une série temporelle est définie comme une collection de valeurs, triées par un horodatage associé à chaque valeur. Dans TSorage, une valeur peut représenter n’importe quel concept tant que celui-ci peut être représenté sous forme d’un objet JSON. </p> <h2><img alt="Les Atouts " data-entity-type="file" data-entity-uuid="cd8e2d38-7833-48a6-b924-83938fc09dd3" height="35" src="/sites/default/files/inline-images/stars.png" width="35" /><strong> Les atouts de TSorage</strong></h2> <p>TSorage présente les avantages suivants : </p> <h3 dir="ltr"><strong><img alt="1" data-entity-type="file" data-entity-uuid="3acf6303-6e37-4788-8b28-ffbd9e6814b4" height="22" src="/sites/default/files/inline-images/1_1.png" width="22" /> Une disponibilité et un passage à l’échelle avant tout (évolutivité)! </strong></h3> <p>TSorage s'appuie sur du matériel standard et moyen de gamme (commodity hardware) pour garantir un service évolutif et résilient aux pannes. Étant nativement une solution distribuée et décentralisée, ses capacités peuvent être étendues en ajoutant simplement plus de ressources sur un cluster TSorage. Lorsqu'il est déployé  sur plusieurs sites, TSorage offre des performances de lecture et d'écriture locales tout en prenant en charge de manière transparente la réplication et la synchronisation entre sites, dans le monde entier. Lorsqu'un site se remet d'un problème de connexion, il se re-synchronise automatiquement avec les autres sites du groupe.</p> <h3 dir="ltr"><img alt="2" data-entity-type="file" data-entity-uuid="43b4938b-6e27-4135-8e64-c810b5559e01" height="24" src="/sites/default/files/inline-images/2_1.png" width="24" /> Pas de vendor lock-in mais des technologies standardisées, ouvertes, et pérennes</h3> <p dir="ltr">La technologie évolue extrêmement rapidement, surtout le domaine (I)IoT où de nouvelles façons de gérer et d'exploiter les capteurs émergent chaque année. Afin d'atténuer le risque de faire des choix technologiques qui s'avéreraient inappropriés à l'avenir, TSorage est composé de modules indépendants et basés sur des technologies open source. Avec une telle approche, les mises à jour sont beaucoup plus faciles lorsqu’une technologie vient en remplacer une autre. Tous les services de TSorage sont disponibles via une API REST qui offre un moyen standardisé de s’abstraire des technologies sous-jacentes. Cette plateforme favorise également l'intégration avec n'importe quelle source ou consommateur de données, faisant de TSorage une plateforme de choix pour vos applications IoT.</p> <h3 dir="ltr"><strong><img alt="3" data-entity-type="file" data-entity-uuid="309a92f7-3695-4d01-8c11-3e9cfd679750" height="24" src="/sites/default/files/inline-images/3_1.png" width="24" /> Une flexibilité des données  </strong></h3> <p dir="ltr">La plupart des capteurs mesurent un signal continu, tel qu’une température ou une pression. Cependant, les séries chronologiques couvrent également de nombreux autres types de données, tels que les positions géographiques, les transactions commerciales et pratiquement tous les événements répétitifs. TSorage gère nativement des types de données couramment utilisés et est conçu pour être facilement étendu afin de prendre en charge vos types de données spécifiques. Si vous pouvez représenter vos mesures sous forme d'objets JSON, TSorage peut les gérer!</p> <h3 dir="ltr"><strong><img alt="4" data-entity-type="file" data-entity-uuid="0bc80bc0-af67-4fc8-9732-345b5c16c3f8" height="26" src="/sites/default/files/inline-images/4_0.png" width="26" /> Une adaptation rapide et de manière prévisible </strong></h3> <p dir="ltr">L'ajout d'une nouvelle source de données (comme un capteur) doit être aussi simple et rapide que possible afin de ne pas étouffer toute innovation. Commencez simplement à alimenter TSorage avec un nouveau flux de données et administrez-le dans un second temps, soit via une application Web dédiée, soit par programmation. Chaque valeur peut être soumise avec des propriétés arbitraires (appelées “tags” dans la terminologie TSorage, nous détaillons cela dans la section suivante) qui permettent d'interroger et de gérer plus efficacement les sources de données. En fin de compte, les utilisateurs ne font plus référence à un identifiant de source unique, mais interrogent, comparent et agrègent les sources en fonction de leurs tags.</p> <p>Au fur et à mesure que vous intégrez de plus en plus de sources de données à la solution, vos besoins de traitement augmentent. TSorage s'appuie sur une architecture élastique qui exploite efficacement les ressources de votre infrastructure. Commencez avec un petit nombre de services conteneurisés et étendez-les à volonté en exécutant simplement plus de nœuds de travail.</p> <h3><strong> <img alt="5" data-entity-type="file" data-entity-uuid="2cad068d-9f09-4160-abfc-b10890a98976" height="26" src="/sites/default/files/inline-images/5.png" width="26" /> Une adaptation à votre infrastructure, prête pour le Cloud.</strong></h3> <p dir="ltr">Lorsque TSorage est utilisé pour gérer des données sensibles, le déploiement sur site peut être préféré à l'utilisation d'une solution d'hébergement à distance. Pour d'autres cas d'utilisation, un déploiement sur un Cloud public ou privé est une meilleure option. Dans les deux cas, TSorage est fourni avec des scripts de déploiement et de surveillance qui réduisent la charge de déploiement et de maintenance de la solution.</p> <h2 dir="ltr"><img alt="concepts" data-entity-type="file" data-entity-uuid="a041bebb-6f07-4cc2-85ae-01ae3fd7625c" height="37" src="/sites/default/files/inline-images/book-open-shape_icon-icons.com_70792.png" width="37" /><strong> Quelques concepts</strong></h2> <p dir="ltr">Voici les différentes notions nécessaires à la bonne compréhension de la plateforme TSorage :</p> <ul><li dir="ltr"> <p dir="ltr"><strong>Une métrique </strong></p> </li> </ul><p dir="ltr">Concept fondamental de TSorage, une <em>métrique </em>est une entité abstraite associée à des mesures classées chronologiquement. Chaque <em>mesure </em>est également appelée un point de données ou une <em>observation</em>.</p> <p>Dans TSorage, tous les points de données appartenant à une métrique représentent le même phénomène physique, numérique ou logique, et ont donc typiquement le même type de données (bien que ce ne soit pas une limitation technique de la plateforme). Le type de données d'une observation détermine la manière dont TSorage la stocke et la présente, ainsi que les transformations auxquelles cette observation peut être soumise.</p> <ul><li dir="ltr"> <p dir="ltr"><strong>Les tags</strong></p> </li> </ul><p dir="ltr">Les <em>tags </em>sont des propriétés associées aux points de données. Leur utilité est d'aider l'utilisateur à comprendre la signification d'une observation particulière ou à interroger des points de données ayant une signification particulière. Concrètement, un tag est un texte arbitraire (la <em>clé</em>), associé à une valeur textuelle arbitraire (la <em>valeur</em>). Il y a deux types de tags :</p> <p dir="ltr">               - les tags dynamiques :  ils sont directement attachés à un point de données,</p> <p dir="ltr">               - les tags statiques : ils sont attachés à une métrique et sont automatiquement hérités de tous ses points de données.</p> <ul><li dir="ltr"> <p dir="ltr"><strong>Les tagsets</strong></p> </li> </ul><p dir="ltr">L'ensemble de tags associé à un point de données est appelé <em>tagset</em>. Un tagset combiné à une métrique constitue une série chronologique dans TSorage.</p> <p dir="ltr">Il existe deux manières typiques d'utiliser les tagsets :</p> <ul dir="ltr"><li> <p> - Une métrique identifie un capteur (au sens large du terme), tandis que les tags clarifient le statut du capteur (nom du fabricant, position géographique, etc.) ou certains des points de données générés (qualité de la donnée, état de fonctionnement, etc.).</p> </li> <li> <p>- La métrique fait référence à une propriété d'intérêt (utilisation du processeur, par exemple), tandis que les tags font référence à l'élément à l'origine des points de données (serveur numéro 5, par exemple).</p> </li> </ul><p dir="ltr">Bien que mélanger ces deux approches soit techniquement possible, nous vous recommandons de choisir l'une d'entre elles et de vous y tenir.</p> <p>Nous vous conseillons d’utiliser les tagsets pour appliquer une politique de sémantique, c’est-à-dire une ontologie. Au lieu de placer des informations dans le nom de la métrique, en utilisant certaines conventions spécifiques à l’entreprise qui sont peu respectées et qui souffrent donc de nombreuses exceptions, le nom de la métrique peut être dénué de sens et la sémantique peut être explicitée à l’aide du tagset.</p> <ul><li dir="ltr"> <p dir="ltr"><strong>Organisation hiérarchique</strong></p> </li> </ul><p>Veuillez noter que rien ne vous empêche d'organiser les métriques de manière hiérarchique, comme c’est souvent le cas avec les réseaux de capteurs industriels, car les clés de tag peuvent être utilisées pour définir les niveaux hiérarchiques de l'organisation (Vous en découvrirez davantage via la <a href="https://tsorage.readthedocs.io/en/latest/#tagmanagement">documentation officielle</a> ou via cet<a href="https://www.cetic.be/metadonnees-pour-meilleure-exploitation-reseaux-de-capteurs-industriels"> article de blog</a>).</p> <p dir="ltr">Les séries chronologiques sont organisées de manière hiérarchique :  les points de données et les valeurs agrégées des différentes séries chronologiques ayant la même métrique peuvent être combinés afin de produire une série chronologique plus générique.  Bien que les technologies impliquées dans TSorage sont assez efficaces et passent bien à l’échelle, sachez que l'extraction et la fusion de plusieurs séries chronologiques peuvent mener à une consommation importante des ressources disponibles. Par conséquent, le nombre de séries chronologiques qui doivent être fusionnées pour satisfaire une requête de données doit rester raisonnable afin de maintenir la pression sur la base de données à un niveau acceptable. </p> <ul><li dir="ltr"> <p dir="ltr"><strong>Les messages</strong></p> </li> </ul><p dir="ltr">Afin d'offrir de meilleures performances, les communications TSorage sont basées sur le concept de message. Un message est essentiellement un ensemble de points de données liés à la même série chronologique. En d'autres termes, les messages sont un moyen de soumettre plusieurs points de données à la fois, tout en ne soumettant le nom de la métrique, le tagset dynamique et le type de données qu'une fois par message.</p> <p dir="ltr">Chaque message doit contenir les éléments suivants :</p> <ul><li> <p>- metric :  l'identifiant de la métrique pour  laquelle de nouveaux points de données sont fournis.</p> </li> <li dir="ltr"> <p dir="ltr">- tagset : l’ensemble de tags dynamiques associés à tous les points de données décrits dans le message.</p> </li> <li dir="ltr"> <p dir="ltr">- type : le type de tous les points de données décrits dans le message. Bien que l'utilisation du même type pour tous les points de données relatifs à une métrique soit généralement considérée comme une bonne pratique, le type associé à une métrique (ou à une série chronologique) peut changer d'un message à un autre.</p> </li> <li dir="ltr"> <p dir="ltr">- values :  une liste de points de données. Chaque point de données est constitué de deux éléments : une représentation de l'horodatage associé au point de données et  la valeur du point de données.</p> </li> </ul><p dir="ltr">D'un point de vue technique, un message est représenté par un objet JSON (il peut également être représenté par un message Protobuf, cliquez <a href="https://tsorage.readthedocs.io/en/latest/#protobuf-format">ici </a>pour plus d’infos).</p> <p dir="ltr">Le schéma JSON d’un message TSorage est le suivant :</p> <pre dir="ltr"> { "$id": "be.cetic.tsorage.messageschema.json", "type": "object", "properties": { "metric": { "type": "string" }, "tagset": { "type": "object", "additionalProperties": { "type": "string" } }, "type": { "type": "string" }, "values": { "type": "array", "items": [ { "type": "array", "items": [ { "type": "string", "pattern" :"^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]+)?(\\.([0-9]){1,3})?$" }, {} ] } ] } }, "required": [ "metric", "type", "values" ] }</pre> <p dir="ltr">Comme illustré ci-dessus, l'attribut tagset doit être un dictionnaire de chaînes de caractères. Chaque valeur (qui représente un point de données) est un tableau contenant l'horodatage et la valeur du point de donnée, dans cet ordre. L'horodatage est représenté par une chaîne de caractères au format <a href="https://fr.wikipedia.org/wiki/ISO_8601">ISO 8601.</a></p> <p dir="ltr">La valeur elle-même peut être n'importe quel objet JSON valide. Son schéma réel dépend du type de donnée spécifié. Il existe plusieurs types de données proposés d’office par TSorage, et des types de données supplémentaires arbitrairement complexes peuvent être ajoutés à volonté.</p> <p dir="ltr">L'extrait ci-dessous est un exemple de message valide décrit à l'aide du format JSON :</p> <pre dir="ltr"> { "metric": "my-temperature-sensor", "tagset": { "quality": "good", "owner": "myself" }, "type": "tdouble", "values": [ [ "2020-01-02T03:04:05.678", 42.1337 ], [ "2020-01-02T03:04:06.123", 654.72 ] ] }</pre> <h2 dir="ltr"><img alt="Architecture" data-entity-type="file" data-entity-uuid="be200399-d425-4570-9907-c936898bb884" height="33" src="/sites/default/files/inline-images/%C3%A9querre_crayon.png" width="33" /> Architecture</h2> <p dir="ltr">Le projet TSorage est basé sur une architecture modulaire, tous les modules étant conçus pour être exécutés dans des conteneurs Docker distincts. Cela fait de TSorage une solution portable, avec des étapes de déploiement simples et standardisées. Il offre également la possibilité de placer les composants sur différentes machines physiques et virtuelles, le rendant disponible sur une large gamme de plateformes et de services.</p> <p>De plus, le (re)dimensionnement d'une architecture conteneurisée est plus facile, puisqu'un composant peut être déplacé vers une plateforme offrant plus de ressources. Sous certaines conditions, les conteneurs peuvent être dupliqués afin d'augmenter les performances des modules sous-jacents.</p> <p dir="ltr">La figure ci-dessous donne un aperçu de l'architecture TSorage.</p> <p dir="ltr"><img alt="architecture TSorage" data-entity-type="file" data-entity-uuid="81f9ae6e-b58a-4d8b-b93f-d51484bbdeb4" height="412" src="/sites/default/files/inline-images/architecture.PNG" width="782" /></p> <p dir="ltr"><strong><img alt="1" data-entity-type="file" data-entity-uuid="3acf6303-6e37-4788-8b28-ffbd9e6814b4" height="15" src="/sites/default/files/inline-images/1_1.png" width="15" /> La passerelle (Gateway) : </strong>le traitement des séries temporelles commence par la couche Gateway, qui contient des composants ad hoc pour collecter ou extraire des valeurs de séries <img alt="gateway" data-entity-type="file" data-entity-uuid="8bde594b-8be8-44e0-99f4-f30dfcb02b90" height="198" src="/sites/default/files/inline-images/couche%20gateway.PNG" width="203" class="align-right" />chronologiques à partir de diverses sources de données. Cette couche prend en charge diverses technologies de communication industrielles, y compris Modbus, OPC-UA et MQTT. Les bases de données distantes peuvent également être consultées pour la collecte de données historiques. Les valeurs de séries chronologiques collectées sont standardisées et temporairement stockées dans un tampon avant d’être finalement transmises à la couche d'ingestion à l'aide des protocoles HTTP ou MQTT.</p> <p dir="ltr"> </p> <p dir="ltr"><strong><img alt="ingestion" data-entity-type="file" data-entity-uuid="e7cc9862-e463-48aa-8576-39f026af8cb0" height="15" src="/sites/default/files/inline-images/2_2.png" width="15" /> La couche d’ingestion :</strong> le système d’ingestion des données est polyvalent et se base sur des technologies standardisées (HTTP, MQTT, etc.) afin de faciliter l’intégration de TSorage dans votre système informatique! Cette couche est celle du  point d'entrée des valeurs de séries chronologiques : la conformité des messages reçus est vérifiée, les messages non autorisés sont rejetés. À partir de là, les entités décrites sont considérées comme des composants internes de TSorage, ce qui signifie essentiellement qu'elles sont gérées par le cluster TSorage. La couche d’ingestion est composée de différents modules d'interface, chacun d'entre eux fournissant un moyen spécifique pour une source de données de soumettre de nouvelles valeurs de séries chronologiques. Les messages acceptés sont poussés vers un topic Apache Kafka12, qui agit comme une file d'attente de messages pour les services internes de traitement de TSorage. </p> <p dir="ltr"><strong><img alt="processing" data-entity-type="file" data-entity-uuid="c4a7526b-a6f3-4558-b7eb-16c26da0514e" height="16" src="/sites/default/files/inline-images/3_2.png" width="16" /> La couche de traitement (processing) : </strong>à ce stade, un ensemble d’applications de traitement gère le flux de messages Kafka. C’est le langage de requêtes de séries chronologiques de Prometheus, PromQL, qui a été implémenté afin d’exploiter les données collectées. Ce langage permet de réaliser des agrégations temporelles, des combinaisons de valeurs, et de filtrer des données tout en prenant en compte la sémantique associée aux capteurs." Il permet d’effectuer des agrégations et des transformations de données en temps réel.</p> <ul dir="ltr"><li> <p>- Les rollups de données (data rollups) sont des agrégations des valeurs au fil du temps. De cette façon, des analyses de haut niveau couvrant de longues périodes peuvent être effectuées plus facilement. Les rollups facilitent également  l’analyse de séries chronologiques, car leurs valeurs sont alignées chronologiquement.</p> </li> <li> <p>- Les transformations de données sont les modifications des valeurs, des noms et des tags des séries chronologiques, en temps réel et selon des fonctions métier, afin d’enrichir les informations traitées. </p> </li> </ul><p dir="ltr"><strong><img alt="Storage" data-entity-type="file" data-entity-uuid="065bf8df-1e0c-45db-b4a1-f5536ab8abef" height="17" src="/sites/default/files/inline-images/4_1.png" width="17" /> La couche de stockage (storage) : </strong><a href="https://aiven.io/cassandra">Apache Cassandra</a> est utilisé pour stocker des valeurs de séries chronologiques de manière permanente. Cette base de données distribuée et décentralisée offre une évolutivité linéaire, tandis que la réplication automatique des données entre différents sites permet à la solution de rester opérationnelle et de se remettre automatiquement de  la défaillance d’un nœud ou même d’un data center entier. De cette façon, la pérennité, la survie et la disponibilité des données sont assurées. TSorage offre également une résilience aux pannes grâce à un mécanisme qui assure la migration automatique des différentes fonctionnalités de la solution d’un serveur défaillant vers un autre fonctionnel, garantissant ainsi une haute disponibilité des différents services.</p> <p dir="ltr">Le modèle de données conçu respecte la nature des données manipulées et des requêtes typiques qui se rapportent à une série chronologique ainsi qu’à un intervalle de temps précis. En plus des valeurs de séries chronologiques, la base de données stocke également les métadonnées qui aident à atteindre plus efficacement les données souhaitées. Par exemple,  une liste de toutes les partitions associées à une métrique particulière, et ayant un tagset particulier, est tenue à jour afin d’améliorer le temps de réponses des requêtes.</p> <p dir="ltr"><strong><img alt="hub" data-entity-type="file" data-entity-uuid="4ce73316-92e7-4d1c-bcc5-5dcf4e9964a2" height="18" src="/sites/default/files/inline-images/5_0.png" width="18" /> La couche Hub : </strong>il s’agit des services qui aident l’utilisateur à interagir avec les autres couches.  Les services déployés dépendent des besoins de l’utilisateur mais ils incluent généralement la gestion des tags, le requêtage de données et les représentations de ces dernières sous forme de tableaux de bord. <a href="https://grafana.com/">Grafana</a> est l’outil proposé pour concevoir et déployer facilement des tableaux de bord, alimentés par les valeurs de séries temporelles ingérées, sous la forme de visualisation <a href="https://scadavis.io/">SCADA</a>. La couche Hub offre une implémentation de <a href="https://prometheus.io/docs/prometheus/latest/querying/basics/">PromQL</a>, le langage de requête de séries chronologiques de Prometheus. Les outils d’analyse et de visualisation supportant ce langage s’intègrent donc aisément avec TSorage.</p> <h2 dir="ltr"><img alt="Exemple" data-entity-type="file" data-entity-uuid="20a6f00a-708c-401e-868c-82514bdde002" height="43" src="/sites/default/files/inline-images/note_list_icon_124054_0.png" width="43" /> Un exemple de cas d’étude</h2> <p dir="ltr">Le CETIC a évalué TSorage dans le cadre du projet de recherche industrielle <a href="//www.cetic.be/ARTEMTEC-en ">SW-ARTEMTEC</a>. L’objectif était de fournir des outils analytiques modernes et avancés issus des technologies liées au big data et à la réalité augmentée afin d’améliorer la maintenance des sites industriels répartis géographiquement dans le monde entier. </p> <p>Le partenaire du CETIC, <a href="https://www.safran-aero-boosters.com/fr">Safran Aero Boosters</a> (SAB), a apporté des flux données provenant de divers capteurs mesurant l’activité d’équipement de test aérospatial. Ces flux de données ont été enregistrés et traités avec TSorage afin de détecter toute anomalie. Le résultat attendu de ce projet est le développement de services innovants répondant aux attentes du marché de SAB.</p> <h2><img alt="conclusion" data-entity-type="file" data-entity-uuid="c50903ee-f184-4410-8b7d-ea7bd1e74247" height="34" src="/sites/default/files/inline-images/pieds_2.png" width="34" /> Pour aller plus loin...</h2> <p dir="ltr">La plateforme TSorage a été développée par le <a href="https://www.cetic.be/">CETIC</a> dans le cadre de l’Industrie 4.0, avec l’ambition de développer un portefeuille d’outils de gestion de données modernes et conformes aux enjeux introduits par l’Internet Industriels des Objets. </p> <p dir="ltr">Vous trouverez la documentation technique <a href="http://doc.tsorage.io">ici</a>, n’hésitez pas à contacter le CETIC pour plus d'informations.</p> <p dir="ltr">Vous pouvez également générer des séries temporelles paramétrables grâce à <a href="http://hub-creatif.ext.cetic.be/fiche/tsimulus-un-generateur-de-series-chronologiques-realistes-open-source">TSimulus </a>pour ensuite les stocker et les visualiser grâce à TSorage. </p> <p dir="ltr">Notez que TSorage peut aussi être déployé à l’aide de <a href="https://fadi.cetic.be">FADI</a>, une plateforme “cloud native” dédiée au Big Data.</p> <p dir="ltr"><strong> </strong></p></div> </div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--text-with-summary.html.twig' --> Fri, 13 Nov 2020 10:19:18 +0000 laurie 41 at http://toolbox.hub-charleroi.be Introduction au Data processing http://toolbox.hub-charleroi.be/fiche/introduction-au-data-processing <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--hover.html.twig x field--node--title.html.twig * field--node--hover.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--node--title.html.twig' --> <span class="field field--name-title field--type-string field--label-hidden">Introduction au Data processing</span> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--hover.html.twig * field--node--field-tags.html.twig * field--node--hover.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/Cloud" hreflang="en">Cloud Computing</a></div> <div class="field__item"><a href="/Gestion%20de%20donn%C3%A9es" hreflang="en">Gestion de données</a></div> <div class="field__item"><a href="/Stockagededonn%C3%A9es" hreflang="en">Stockage de données</a></div> </div> </div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--hover.html.twig x field--node--uid.html.twig * field--node--hover.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--node--uid.html.twig' --> <span class="field field--name-uid field--type-entity-reference field--label-hidden"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/user/username.html.twig' --> <span lang="" about="/user/5" typeof="schema:Person" property="schema:name" datatype="">laurie</span> <!-- END OUTPUT from 'core/themes/classy/templates/user/username.html.twig' --> </span> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--hover.html.twig x field--node--created.html.twig * field--node--hover.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--node--created.html.twig' --> <span class="field field--name-created field--type-created field--label-hidden">Fri, 11/06/2020 - 14:29</span> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-pdf--hover.html.twig * field--node--field-pdf.html.twig * field--node--hover.html.twig * field--field-pdf.html.twig * field--file.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <div class="field field--name-field-pdf field--type-file field--label-above"> <div class="field__label">Télécharger le PDF</div> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'file_link' --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/file-link.html.twig' --> <span class="file file--mime-application-pdf file--application-pdf"> <a href="http://toolbox.hub-charleroi.be/sites/default/files/2021-06/Fiche%20introduction%20au%20Data%20processing.pdf" type="application/pdf; length=2887108">Fiche introduction au Data processing.pdf</a></span> <!-- END OUTPUT from 'core/themes/classy/templates/field/file-link.html.twig' --> </div> </div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--hover.html.twig * field--node--body.html.twig * field--node--hover.html.twig * field--body.html.twig x field--text-with-summary.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/field/field--text-with-summary.html.twig' --> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div class="field__item"><p><span><span><span><span><span><span>Data lake, ETL, Data warehouse, Batch processing, Data engineer… tous ces termes sont pour vous du charabia ?  Pas de panique ! Cette fiche vous propose de découvrir tout ce jargon qui appartient en réalité au </span></span></span></span></span></span><span><span><span><span><em><span><strong>Data processing</strong>, </span></em></span></span></span></span><span><span><span><span><span><span>le processus qui <strong>traite vos données </strong>pour les<strong> transformer en information utile</strong> et en <strong>valeur ajoutée</strong> pour votre entreprise.</span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Découvrez également ce qu’est le<strong><em> Data engineering</em></strong>, la discipline en lien, entre autres, avec la <strong>qualité de vos données</strong> ainsi que le<strong> processus ETL</strong>, détaillé étape par étape, et ses spécificités par rapport au <strong>Big Data</strong>. Ensuite, nous examinerons les particularités de deux modes de stockage de données bien connus que sont les </span></span></span></span></span></span><strong><span><span><span><span><em><span>Data lakes</span></em></span></span></span></span></strong><span><span><span><span><span><span> et les </span></span></span></span></span></span><span><span><span><span><em><span><strong>Data warehouses</strong>. </span></em></span></span></span></span></p> <p><span><span><span><span><span><span>Vous verrez qu'il n’y a pas de solution unique qui soit meilleure que les autres, cela dépend de votre entreprise et surtout de vos besoins. </span></span></span></span></span></span></p> <h2><strong> <strong><img alt="pour quoi faire" data-entity-type="file" data-entity-uuid="dc02ec25-2902-439b-a035-9a05da935a01" height="45" src="/sites/default/files/inline-images/goal2_8.png" width="45" /></strong>  Pour quoi faire ? </strong></h2> <p><span><span><span><span><span><span>A l’heure actuelle, notre société est bouleversée par ce qu’on appelle la  </span></span></span></span></span></span><span><span><span><span><em><span>transformation numérique</span></em></span></span></span></span><span><span><span><span><span><span> : les entreprises intègrent de plus en plus de technologies numériques au sein de leurs activités afin d'accroître leur productivité, leur croissance, leurs innovations,... et donc leur compétitivité. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Les entreprises ont maintenant accès à une multitude de données provenant de sources diverses et variées (vidéos, réseaux sociaux, sites consultés, formulaires complétés,...). Ces données doivent être correctement interprétées pour fournir des informations utiles à l’entreprise, c’est-à-dire des informations qui permettent d’analyser la situation passée et présente afin de prendre des décisions pertinentes concernant le futur (résoudre des problèmes, proposer de nouveaux produits,...). Un des grands défis du Big Data est donc de savoir que faire dire aux données et dans quel but ?  Comment les interpréter correctement afin de les comprendre, de les analyser, de leur ajouter une valeur et les utiliser pour améliorer l’expérience utilisateur ? </span></span></span></span></span></span></p> <h2><span><span><span><span><span><span>Le Data Processing </span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Le </span></span></span></span></span></span><span><span><span><span><em><span>data processing </span></em></span></span></span></span><span><span><span><span><span><span> est ce qu’on appelle le traitement des données au sens large, c’est le processus qui va transformer vos données brutes en informations exploitables. Le traitement des données se compose des étapes suivantes : </span></span></span></span></span></span></p> <ol><li> <p><span><span><span><span><span><span>1. La collecte des données </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>2. La préparation des données (</span></span></span></span></span></span><span><span><span><span><em><span>pre-processing</span></em></span></span></span></span><span><span><span><span><span><span>) : on améliore leur qualité.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>3. L’importation: Les données propres sont ensuite saisies dans leur destination.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>4. Le traitement des données (</span></span></span></span></span></span><span><span><span><span><em><span>processing</span></em></span></span></span></span><span><span><span><span><span><span>) : les données sont transformées, par exemple à l’aide d’algorithmes d'apprentissage automatique.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>5. La sortie et l’interprétation  : il s’agit du résultat. Les données sont converties, lisibles et exploitables car elles fournissent de l’information utile. Elles sont présentées sous forme de graphiques, images, vidéos,... </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>6. Le stockage : les  données transformées sont stockées pour être utilisées ultérieurement. </span></span></span></span></span></span></p> </li> </ol><img alt="Data processing" data-entity-type="file" data-entity-uuid="b74ee6b7-8cf0-4db3-bb5c-24379292f338" height="304" src="/sites/default/files/inline-images/data%20processing.PNG" width="325" class="align-center" /><p><span><span><span><span><span><span>Ces étapes forment un cycle qui va  vous permettre d’extraire de la valeur de vos données.</span></span></span></span></span></span></p> <h2><span><span><span><span><span><span>Le Data Engineering</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Bien que certains considèrent que les origines du </span></span></span></span></span></span><span><span><span><span><em><span>Data Engineering</span></em></span></span></span></span><span><span><span><span><span><span> (ou l’</span></span></span></span></span></span><span><span><span><span><em><span>Ingénierie des données </span></em></span></span></span></span><span><span><span><span><span><span> en français) remontent à 1980, voire à 1950, c’est à partir des années 2000 et l’avènement du Big Data que cette discipline devient vraiment nécessaire, et à partir de 2010 que ce terme est popularisé.  </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Souvent confondue avec la </span></span></span></span></span></span><span><span><span><span><em><span>Science des données</span></em></span></span></span></span><span><span><span><span><span><span> (</span></span></span></span></span></span><span><span><span><span><em><span>Data Science</span></em></span></span></span></span><span><span><span><span><span><span> en anglais), l’</span></span></span></span></span></span><span><span><span><span><em><span>ingénierie des données</span></em></span></span></span></span><span><span><span><span><span><span> vise à mettre en place les outils et infrastructures nécessaires et adéquats pour l’analyse, la préparation et le traitement des données volumineuses afin d’en garantir leur pertinence, leur qualité et d'éliminer celles qui sont inutiles. L’</span></span></span></span></span></span><span><span><span><span><em><span>ingénieur des données</span></em></span></span></span></span><span><span><span><span><span><span> (</span></span></span></span></span></span><span><span><span><span><em><span>Data Engineer</span></em></span></span></span></span><span><span><span><span><span><span>) fournit les données traitées et prêtes à l’usage aux </span></span></span></span></span></span><span><span><span><span><em><span>Data Scientists</span></em></span></span></span></span><span><span><span><span><span><span> (</span></span></span></span></span></span><span><span><span><span><em><span>experts en Science des données</span></em></span></span></span></span><span><span><span><span><span><span>) qui effectueront de l’</span></span></span></span></span></span><span><span><span><span><em><span>analyse prédictive</span></em></span></span></span></span><span><span><span><span><span><span>, du </span></span></span></span></span></span><span><span><span><span><em><span>Machine Learning</span></em></span></span></span></span><span><span><span><span><span><span> ou du </span></span></span></span></span></span><span><span><span><span><em><span>Data Mining</span></em></span></span></span></span><span><span><span><span><span><span> à partir de celle-ci.</span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Le</span></span></span></span></span></span><span><span><span><span><em><span> data engineering</span></em></span></span></span></span><span><span><span><span><span><span> répond aux 5V caractéristiques du Big data : afin d’obtenir davantage de connaissances sur ses clients, ses ventes, ses stratégies marketing, ses besoins,... et donc d’obtenir un avantage concurrentiel sur le marché (<em>véracité</em> et <em>valeur</em>), une entreprise doit ingérer énormément de données (<em>volume</em>) provenant de sources diverses (<em>variété</em>) et les traiter rapidement (<em>vitesse</em>). </span></span></span></span></span></span></p> <img alt="Big Data" data-entity-type="file" data-entity-uuid="d3ea1ba1-e135-44b6-8359-34e13f190b46" height="304" src="/sites/default/files/inline-images/6_2.png" width="315" class="align-center" /><h2><span><span><span><span><span><span>Le processus ETL</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Apparu dans les années 1970, un </span></span></span></span></span></span><span><span><span><span><em><span>ETL </span></em></span></span></span></span><span><span><span><span><span><span>(</span></span></span></span></span></span><span><span><span><span><em><span>Extraction-Transform-Load</span></em></span></span></span></span><span><span><span><span><span><span>) est le processus utilisé par les </span></span></span></span></span></span><span><span><span><span><em><span>ingénieurs de données (Data Engineer)</span></em></span></span></span></span><span><span><span><span><span><span> pour transformer vos multiples données brutes en informations commerciales exploitables. L’ETL facilite la migration de gros volumes de données provenant de sources multiples vers un emplacement centralisé afin d’en obtenir une vue globale et unifiée, c’est de l’</span></span></span></span></span></span><span><span><span><span><em><span>intégration de données</span></em></span></span></span></span><span><span><span><span><span><span> (</span></span></span></span></span></span><span><span><span><span><em><span>data integration</span></em></span></span></span></span><span><span><span><span><span><span>). Cela se fait en 3 phases : l’extraction, la transformation et le chargement.</span></span></span></span></span></span></p> <img alt="processus ETL" data-entity-type="file" data-entity-uuid="c9d71486-b3ac-4d9b-a725-b4ed76f7938f" height="340" src="/sites/default/files/inline-images/divers%20%284%29_0.png" width="791" class="align-center" /><h3><img alt="1" data-entity-type="file" data-entity-uuid="b086cb73-adcd-439c-b8a1-a634c003604e" height="23" src="/sites/default/files/inline-images/1_4.png" width="23" /><span><span><span><span><span><span> Extraction (</span></span><em><span>extract</span></em></span></span></span></span><span><span><span><span><span><span>)</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>La première phase, l'extraction, est celle de la collecte de données. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Aujourd’hui, il y a une multiplication des flux de données et de leur quantité.  Davantage complexes, les données proviennent de sources multiples (de votre smartphone, de votre montre connectée, des systèmes d'entreprise, des API, de n’importe quel capteur, d’outils de marketing, de bases de données de transactions, de </span></span></span></span></span></span><span><span><span><span><em><span>data lake</span></em></span></span></span></span><span><span><span><span><span><span> et de </span></span></span></span></span></span><span><span><span><span><em><span>data warehouse</span></em></span></span></span></span><span><span><span><span><span><span>,...) et peuvent donc avoir n’importe quelle structure et format. Il existe 3 types de structure de données : </span></span></span></span></span></span></p> <ol><li> <p><span><span><span><span><span><span>1. Les </span></span></span></span></span></span><span><span><span><span><em><span>données non structurées : </span></em></span></span></span></span><span><span><span><span><span><span>elles ne sont absolument pas organisées et sont sous forme brute absolue. Ce sont par exemple des e-mails, des posts de réseaux sociaux, des Powerpoint, des vidéos, des images… </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>2. Les </span></span></span></span></span></span><span><span><span><span><em><span>données semi-structurées </span></em></span></span></span></span><span><span><span><span><span><span>: elles sont partiellement organisées. Elles sont plus facilement gérables que les données non structurées car elles possèdent des propriétés organisationnelles cohérentes et définies telles que des métadonnées ou des balises sémantiques. Cependant, leur structure n’est pas rigide et elles peuvent toutefois contenir des incohérences ou des variabilités. </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>3. Les </span></span></span></span></span></span><span><span><span><span><em><span>données structurées</span></em></span></span></span></span><span><span><span><span><span><span> : ce sont les données organisées dans un référentiel formaté et qui sont structurées en cellules ou en colonnes. Elles peuvent être générées par des machines mais aussi par des humains. Elles dépendent d'une base de données relationnelle ou d'un schéma et sont donc rigides. </span></span></span></span></span></span></p> </li> </ol><p><span><span><span><span><span><span>La qualité des données importées va donc dépendre de la fiabilité des sources et de leur structure. </span></span></span></span></span></span></p> <h3><span><span><span><span><span><span>Les types de chargement des données </span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>Concernant le Big data, il y a deux types de chargement des données assez répandus pour traiter rapidement les grands volumes de données. Le choix de l’un d’eux  dépend de votre cas d’utilisation.</span></span></span></span></span></span></p> <h3><span><span><span><span><span><span>1. Le mode Batch (par lots) </span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>Le mode de traitement des données par lots/batch est celui qui est mobilisé traditionnellement pour l’approche ETL : il s’agit de traiter un grand volume de données en une seule fois, sur une période donnée (un traitement des données à la demande). Il faut attendre la fin de la phase de collecte de données (extraction et chargement) pour débuter celle de traitement qui se fait par lots de données (la “</span></span></span></span></span></span><span><span><span><span><em><span>fenêtre de batch</span></em></span></span></span></span><span><span><span><span><span><span>”). Il y a donc une période de latence entre le moment où vos données apparaissent dans la couche de stockage et le moment où elles sont disponibles dans les outils d’analyse et de reporting. Vous ne devez que peu intervenir dans cette phase de traitement car les tâches s’exécutent les unes après les autres selon les priorités déterminées et sans interruption. Vous devez juste indiquer le nombre de données à atteindre (la limite) ou le moment précis  où l’ETL par lots doit être exécuté (toutes les 24 heures, tous les 3 jours,...). </span></span></span></span></span></span></p> <p><br /><span><span><span><span><span><span>Le mode </span></span></span></span></span></span><span><span><span><span><em><span>Batch </span></em></span></span></span></span><span><span><span><span><span><span>est souvent utilisé lorsqu’il faut réaliser  des calculs complexes qui prennent du temps comme des facturations, des commandes ou encore pour mettre à jour le profil utilisateur d’un site de ventes et proposer des articles personnalisés par exemple. </span></span></span></span></span></span></p> <!-- THEME DEBUG --> <!-- THEME HOOK: 'filter_caption' --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/content-edit/filter-caption.html.twig' --> <figure role="group" class="caption caption-img align-center"><img alt="Mode Batch" data-entity-type="file" data-entity-uuid="569b258a-47ad-4171-80a6-17b4943dea26" height="436" src="/sites/default/files/inline-images/mode%20batch.PNG" width="735" /><figcaption>Illustration du mode Batch provenant de <a href="https://www.upsolver.com/blog/batch-stream-a-cheat-sheet">Upsolver</a></figcaption></figure><!-- END OUTPUT from 'core/themes/classy/templates/content-edit/filter-caption.html.twig' --><p> </p> <h3><span><span><span><span><span><span>2. Le mode Stream</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>Avec le mode Stream, les données sont traitées en continu, c’est-à-dire au fur et à mesure de leur arrivée dans la couche de stockage afin de vous permettre d’accéder rapidement aux données et d’y réagir le plus vite possible une fois un événement détecté. Contrairement au mode </span></span></span></span></span></span><span><span><span><span><em><span>batch</span></em></span></span></span></span><span><span><span><span><span><span>, le flux est quasi en temps réel et les systèmes ne doivent pas stocker de grands volumes de données. </span></span></span></span></span></span></p> <p><br /><span><span><span><span><span><span>Le mode </span></span></span></span></span></span><span><span><span><span><em><span>Stream </span></em></span></span></span></span><span><span><span><span><span><span>est surtout conseillé lorsque vous devez détecter des évènements et y répondre rapidement, comme par exemple la surveillance des services, la cybersécurité, l’analyse des comportements, la détection de fraudes, la disponibilité d’un produit en stock, ...  </span></span></span></span></span></span></p> <!-- THEME DEBUG --> <!-- THEME HOOK: 'filter_caption' --> <!-- BEGIN OUTPUT from 'core/themes/classy/templates/content-edit/filter-caption.html.twig' --> <figure role="group" class="caption caption-img align-center"><img alt="Mode Stream" data-entity-type="file" data-entity-uuid="40016444-7d68-4c45-9003-6645e4d5625d" height="435" src="/sites/default/files/inline-images/mode%20stream.PNG" width="604" /><figcaption>Illustration du mode Stream provenant de <a href="https://www.upsolver.com/blog/batch-stream-a-cheat-sheet">Upsolver</a></figcaption></figure><!-- END OUTPUT from 'core/themes/classy/templates/content-edit/filter-caption.html.twig' --><h2><img alt="2" data-entity-type="file" data-entity-uuid="49e4f7b0-c866-4e55-8b91-a51b99b26657" height="24" src="/sites/default/files/inline-images/2_5.png" width="24" /> <span><span><span><span><span><span>Transformation (</span></span><em><span>transform</span></em></span></span></span></span><span><span><span><span><span><span>)</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>La seconde phase concerne le traitement apporté aux données collectées. Il se fait grâce à l’exécution d’algorithmes de machine learning et dépend des utilisations prévues des données (celles-ci doivent être déterminées à l’avance). </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Le traitement vise à structurer les données, à les convertir et à les homogénéiser en modifiant leur format, en les enrichissant, en les complétant, en les nettoyant,... Car pour pouvoir croiser, comparer et analyser des données, il faut que celles-ci soient comparables !  Le traitement va donc rendre les données brutes interprétables selon les besoins (les finalités déterminées des données) et les transformer en information commerciale exploitable. </span></span></span></span></span></span></p> <h3><span><span><span><span><span><span>Un stockage intermédiaire et temporaire</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>Très souvent, les données extraites lors de la première phase sont stockées temporairement dans une </span></span></span></span></span></span><span><span><span><span><em><span>zone de transit </span></em></span></span></span></span><span><span><span><span><span><span>(</span></span></span></span></span></span><span><span><span><span><em><span>staging</span></em></span></span></span></span><span><span><span><span><span><span> </span></span></span></span></span></span><span><span><span><span><em><span>area</span></em></span></span></span></span><span><span><span><span><span><span>). Cette zone se trouve dans l’ETL utilisé et sert d'intermédiaire entre les sources de données et la cible des données (la destination des données). Vous pouvez y faire toutes les manipulations nécessaires à la transformation de vos données. </span></span></span></span></span></span></p> <h3><span><span><span><span><span><span>Les transformations des données</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>Pour analyser vos données, il faut d’abord les préparer, c’est-à-dire qu’il faut effectuer différentes transformations sur celles-ci en fonction de vos besoins. Plus vos sources de données sont de faible qualité, plus vous aurez des transformations et du nettoyage à effectuer pour éviter d’avoir des erreurs telles que des données manquantes, redondantes, une erreur lexicale et/ou  de format,... </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Voici quelques exemples de nettoyages et de transformations possibles de vos données pour que celles-ci soient cohérentes, exploitables et fiables : </span></span></span></span></span></span></p> <ul><li> <p><span><span><span><span><span><span>- Le </span></span></span></span></span></span><span><span><span><span><em><span>mappage des données</span></em></span></span></span></span><span><span><span><span><span><span> : il s’agit de faire correspondre deux modèles de données, les champs des données extraites à ceux associés dans la destination. </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- La </span></span></span></span></span></span><span><span><span><span><em><span>vérification </span></em></span></span></span></span><span><span><span><span><span><span>de la cohérence du format des données  et leur </span></span></span></span></span></span><span><span><span><span><em><span>conversion </span></em></span></span></span></span><span><span><span><span><span><span>si nécessaire (des unités de mesure, des dates et heures,...)</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- La </span></span></span></span></span></span><span><span><span><span><em><span>déduplication </span></em></span></span></span></span><span><span><span><span><span><span>: c’est l’identification et la suppression des enregistrements présents en plusieurs exemplaires (autrement dit les doublons).</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- Le </span></span></span></span></span></span><span><span><span><span><em><span>filtrage </span></em></span></span></span></span><span><span><span><span><span><span>: c’est la sélection de certains enregistrements selon des règles.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><em><span>- Tri </span></em></span></span></span></span><span><span><span><span><span><span>des données par ordre croissant ou décroissant. </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- La </span></span></span></span></span></span><span><span><span><span><em><span>jointure </span></em></span></span></span></span><span><span><span><span><span><span>des données : il s’agit de lier des données provenant de sources différentes.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- Le </span></span></span></span></span></span><span><span><span><span><em><span>fractionnement </span></em></span></span></span></span><span><span><span><span><span><span>d’une colonne unique en plusieurs colonnes.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- L’</span></span></span></span></span></span><span><span><span><span><em><span>agrégation </span></em></span></span></span></span><span><span><span><span><span><span>: regroupement de différentes données. </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>- La </span></span></span></span></span></span><span><span><span><span><em><span>récapitulation </span></em></span></span></span></span><span><span><span><span><span><span>: calculs pour obtenir des valeurs totales. </span></span></span></span></span></span></p> </li> </ul><h2><img alt="3" data-entity-type="file" data-entity-uuid="a1f68734-f91c-4c55-985a-5a9ca9625ece" height="24" src="/sites/default/files/inline-images/3_4.png" width="24" /> <span><span><span><span><span><span>Chargement (load)</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>La phase de chargement est la phase où vos données traitées et structurées sont chargées et stockées dans la destination cible ;  un système centralisé qui peut être une base de données, un fichier, un serveur mais qui est bien souvent un </span></span></span></span></span></span><span><span><span><span><em><span>datawarehouse </span></em></span></span></span></span><span><span><span><span><span><span>(voir section ci-dessous)</span></span></span></span></span></span><span><span><span><span><em><span>.</span></em></span></span></span></span></p> <h3><span><span><span><span><span><span>Les avantages</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>En résumé, un ETL vous permet d’avoir :</span></span></span></span></span></span></p> <ul><li> <p><span><span><span><span><span><span> Une </span></span></span></span></span></span><span><span><span><span><em><span>migration </span></em></span></span></span></span><span><span><span><span><span><span>et une </span></span></span></span></span></span><span><span><span><span><em><span>intégration </span></em></span></span></span></span><span><span><span><span><span><span>automatisées et rapides de grandes quantités de données provenant de systèmes disparates.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>Un</span></span></span></span></span></span><span><span><span><span><em><span> référentiel de données</span></em></span></span></span></span><span><span><span><span><span><span> : les données sont centralisées dans un endroit unique, ce qui vous apporte une meilleure accessibilité à celles-ci.</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>Les </span></span></span></span></span></span><span><span><span><span><em><span>transformations complexes apportées</span></em></span></span></span></span><span><span><span><span><span><span> unifient vos données (même format,...) et vous apportent une vue globale de vos ressources. De plus, ces processus de traitement sont réutilisables ! </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>Un </span></span></span></span></span></span><span><span><span><span><em><span>contrôle </span></em></span></span></span></span><span><span><span><span><span><span>sur l’ensemble de vos ressources : vos données sont de meilleure qualité (les traitements les rendent fiables). </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>Une </span></span></span></span></span></span><span><span><span><span><em><span>synchronisation </span></em></span></span></span></span><span><span><span><span><span><span>de vos applications et donc une </span></span></span></span></span></span><span><span><span><span><em><span>actualisation </span></em></span></span></span></span><span><span><span><span><span><span>instantanée de vos données (vous pouvez y accéder en temps réel).</span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>Vous pouvez tirer </span></span></span></span></span></span><span><span><span><span><em><span>profit </span></em></span></span></span></span><span><span><span><span><span><span>de vos données traitées.</span></span></span></span></span></span></p> </li> </ul><h3><span><span><span><span><span><span>Quelques outils clouds open source</span></span></span></span></span></span></h3> <ul><li> <p><a href="https://www.talend.com/fr/products/talend-open-studio/%C2%B5"><span><span><span><span><span><span><span><span>Talend Open studio</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> </span></span></span></span></span></span></p> </li> <li> <p><a href="https://scriptella.org/"><span><span><span><span><span><span><span><span>Scriptella </span></span></span></span></span></span></span></span></a></p> </li> <li> <p><a href="https://www.linuxlinks.com/ketl/"><span><span><span><span><span><span><span><span>Ketl</span></span></span></span></span></span></span></span></a> </p> </li> </ul><h3><span><span><span><span><span><span>Le processus ELT</span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>Le </span></span></span></span></span></span><span><span><span><span><em><span>processus d’intégration ETL</span></em></span></span></span></span><span><span><span><span><span><span> est traditionnellement utilisé mais avec les nombreuses avancées technologiques, cela évolue. Il existe aussi le processus </span></span></span></span></span></span><span><span><span><span><em><span>ELT (Extraction - Loading - Transform</span></em></span></span></span></span><span><span><span><span><span><span>) : dans ce processus, vos données brutes sont extraites des sources de données et sont directement chargées vers votre système cible (très souvent un </span></span></span></span></span></span><span><span><span><span><em><span>Data lake</span></em></span></span></span></span><span><span><span><span><span><span>, voir la définition dans la section suivante), sans les transformer en fonction de vos besoins métier et sans passer par une zone de transit. Le nettoyage et les transformations des données se font donc après, dans le système/plateforme cible,  quand vous devez les utiliser. </span></span></span></span></span></span></p> <img alt="processus ELT" data-entity-type="file" data-entity-uuid="56bdd3aa-b698-49ac-b9ab-385afeac0192" height="342" src="/sites/default/files/inline-images/5_2.png" width="793" class="align-center" /><h3><span><span><span><span><span><span>Les avantages </span></span></span></span></span></span></h3> <p><span><span><span><span><span><span>En résumé, un </span></span></span></span></span></span><span><span><span><span><em><span>ELT </span></em></span></span></span></span><span><span><span><span><span><span>vous permet d’avoir :</span></span></span></span></span></span></p> <ul><li> <p><span><span><span><span><span><span>une </span></span></span></span></span></span><span><span><span><span><em><span>extraction </span></em></span></span></span></span><span><span><span><span><span><span>et un </span></span></span></span></span></span><span><span><span><span><em><span>chargement plus </span></em></span></span></span></span><span><span><span><span><span><span>rapides de vos données dans le système cible vu qu’il n’y a pas toute l’étape de transformation. </span></span></span></span></span></span></p> </li> </ul><ul><li> <p><span><span><span><span><span><span>une plus grande </span></span></span></span></span></span><span><span><span><span><em><span>flexibilité </span></em></span></span></span></span><span><span><span><span><span><span>et  </span></span></span></span></span></span><span><span><span><span><em><span>facilité </span></em></span></span></span></span><span><span><span><span><span><span>de stockage de nouvelles données non structurées notamment. </span></span></span></span></span></span></p> </li> <li> <p><span><span><span><span><span><span>un temps de réflexion plus long concernant la détermination des données à transformer et à analyser. </span></span></span></span></span></span></p> </li> </ul><h2><span><span><span><span><span><span>Les modes de stockages et de centralisation de vos données </span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Il existe deux modes de stockage et de centralisation de données qui sont souvent confondus : les </span></span></span></span></span></span><span><span><span><span><em><span>Data lakes</span></em></span></span></span></span><span><span><span><span><span><span> et les </span></span></span></span></span></span><span><span><span><span><em><span>Data warehouses</span></em></span></span></span></span><span><span><span><span><span><span>. Ayant chacun des caractéristiques qui leurs sont propres, le choix d’utiliser l’un ou l’autre va surtout dépendre des besoins spécifiques de votre entreprise. </span></span></span></span></span></span></p> <ol><li> <h3><span><span><span><span><span><span>1. Les </span></span></span></span></span></span><span><span><span><span><em><span>Data lakes </span></em></span></span></span></span><span><span><span><span><span><span>(</span></span></span></span></span></span><span><span><span><span><em><span>lacs de données</span></em></span></span></span></span><span><span><span><span><span><span>) </span></span></span></span></span></span></h3> </li> </ol><p><span><span><span><span><span><span>Un </span></span></span></span></span></span><span><span><span><span><em><span>Data lake </span></em></span></span></span></span><span><span><span><span><span><span>est un référentiel de données qui vous permet de stocker “en vrac” vos données originales et brutes collectées, et d’y accéder rapidement avant leur traitement (la phase de transformation). Vous pouvez donc y trouver des </span></span></span></span></span></span><span><span><span><span><em><span>données non structurées</span></em></span></span></span></span><span><span><span><span><span><span>, </span></span></span></span></span></span><span><span><span><span><em><span>semi-structurées</span></em></span></span></span></span><span><span><span><span><span><span> ou </span></span></span></span></span></span><span><span><span><span><em><span>structurées</span></em></span></span></span></span><span><span><span><span><span><span>. </span></span></span></span></span></span></p> <p><span><span><span><span><span><span>En stockant n’importe quel type de données quelles que soient leur nature et leur origine, vous pouvez découvrir de nouvelles questions/problématiques/hypothèses auxquelles vous ne pensiez pas auparavant… C’est d’ailleurs pour cela que les </span></span></span></span></span></span><span><span><span><span><em><span>Data lakes </span></em></span></span></span></span><span><span><span><span><span><span>sont surtout utilisés par des </span></span></span></span></span></span><span><span><span><span><em><span>Data scientists</span></em></span></span></span></span><span><span><span><span><span><span> et </span></span></span></span></span></span><span><span><span><span><em><span>Data engineers</span></em></span></span></span></span><span><span><span><span><span><span> dans le cadre de </span></span></span></span></span></span><span><span><span><span><em><span>Machine learning</span></em></span></span></span></span><span><span><span><span><span><span>, </span></span></span></span></span></span><span><span><span><span><em><span>intelligence artificielle</span></em></span></span></span></span><span><span><span><span><span><span> et </span></span></span></span></span></span><span><span><span><span><em><span>modélisation prédictive</span></em></span></span></span></span><span><span><span><span><span><span>.</span></span></span></span></span></span></p> <p><span><span><span><span><span><span>L’</span></span></span></span></span></span><span><span><span><span><em><span>ELT</span></em></span></span></span></span><span><span><span><span><span><span> est la solution à privilégier si vous disposez de lacs de données car ce processus ingère des données non structurées, contrairement à l’ETL qui transforme les données brutes en données structurées. </span></span></span></span></span></span></p> <ol start="2"><li> <h3><span><span><span><span><span><span>2. Les </span></span></span></span></span></span><span><span><span><span><em><span>Data warehouses</span></em></span></span></span></span><span><span><span><span><span><span>  (</span></span></span></span></span></span><span><span><span><span><em><span>entrepôts de données</span></em></span></span></span></span><span><span><span><span><span><span>) </span></span></span></span></span></span></h3> </li> </ol><p><span><span><span><span><span><span>Les </span></span></span></span></span></span><span><span><span><span><em><span>Data warehouses</span></em></span></span></span></span><span><span><span><span><span><span> sont des bases de données où sont stockées les vues agrégées des données ingérées. Ils ne sont pas connectés aux sources de données directement : ces dernières passent par une solution </span></span></span></span></span></span><span><span><span><span><em><span>ETL </span></em></span></span></span></span><span><span><span><span><span><span>(</span></span></span></span></span></span><span><span><span><span><em><span>Extract, Transform and Load</span></em></span></span></span></span><span><span><span><span><span><span>) qui extrait les données pertinentes de sources de données (éventuellement un </span></span></span></span></span></span><span><span><span><span><em><span>data lake</span></em></span></span></span></span><span><span><span><span><span><span>), les transforme et les charge dans le </span></span></span></span></span></span><span><span><span><span><em><span>Data warehouse</span></em></span></span></span></span><span><span><span><span><span><span>.</span></span></span></span></span></span></p> <p><span><span><span><span><span><span>Les Data Warehouses sont surtout utilisés par des analystes, managers et des utilisateurs finaux pour analyser leurs données à l’aide de métriques, reportings et chiffres clés, en vue de prendre plus facilement des décisions.</span></span></span></span></span></span></p> <h3><span><span><span><span><span><span>Comparaison entre un Data lake et un Data warehouse</span></span></span></span></span></span></h3> <img alt="comparaison data lake et data warehouse" data-entity-type="file" data-entity-uuid="3db0434b-df9b-49e3-9961-a5901c3ddf58" height="284" src="/sites/default/files/inline-images/comparaison%20data%20lake%20data%20warehouse.PNG" width="579" class="align-center" /><h2><span><span><span><span><span><span>Besoin d’une aide supplémentaire ?</span></span></span></span></span></span></h2> <p><span><span><span><span><span><span>Le </span></span></span></span></span></span><a href="https://www.hub-charleroi.be/fr/team"><span><span><span><span><span><span><span><span>Hub-C</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> dans le cadre de ses services d’accompagnement numérique organise des workshops et groupes de travail en lien avec les nouvelles technologies de prototypages.  Vous souhaitez un accompagnement pour votre projet innovant ou vous souhaitez participer à un prochain workshop? N'hésitez pas à contacter </span></span></span></span></span></span><a href="https://www.hub-charleroi.be/fr/team"><span><span><span><span><span><span><span><span>un membre du Hub</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> ! </span></span></span></span></span></span></p> <p><br /><span><span><span><span><span><span>Vous avez une question spécifique à propos d’une fiche? Elles sont réalisées par les experts du </span></span></span></span></span></span><a href="https://www.cetic.be/"><span><span><span><span><span><span><span><span>CETIC</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span> (Centre d'Excellence en Technologies de l'Information et de la Communication), un  centre de recherche appliquée en informatique situé à Charleroi. Vous trouverez toutes les coordonnées </span></span></span></span></span></span><a href="https://www.cetic.be/Contact"><span><span><span><span><span><span><span><span>ici</span></span></span></span></span></span></span></span></a><span><span><span><span><span><span>.</span></span></span></span></span></span></p></div> </div> <!-- END OUTPUT from 'core/themes/classy/templates/field/field--text-with-summary.html.twig' --> Fri, 06 Nov 2020 13:29:29 +0000 laurie 48 at http://toolbox.hub-charleroi.be