Implémentation d’un inventaire de données

Implémentation d’un inventaire de données


Comme vous pouvez vous en douter, la problématique d’un inventaire de données n’est pas si simple. Dans cet article nous allons voir les choix techniques répondant à nos attentes.

Inventaire de données

Un inventaire de données permet de lister toutes sortes d'information d'un système.
Prenons l'exemple d'un inventaire, d'un appartement de type T1:

Appartement:
  • Infos générales:
    • Surface: 35 m²
    • Nombre de couchages: 3
    • Wifi: Oui
  • Salon:
    • Vaisselles:
      • Couteaux: 6
      • Fourchettes: 6
      • Cuillères: 6
      • Cuillère à olives: 1
      • Verres: 6
    • Multimédia:
      • Radio: Oui
      • Télévision: 
        • Chaines:
          • Francais: Oui
          • Anglais: Oui
        • Télécommande: Oui
      • Téléphone: Oui
    • Mobilier et rangement:
      • Bureau: Oui, 1
      • Clic-Clac: Oui 1
        • Size:
          • 140*190
  • ...

On peut donc remarqué une notion d'arborescence avec des éléments de types différents, en effet on retrouve des entiers ( "Couteaux: 6") des booléens, des labels ("Salon:") et des dimensions ("140*190") ...

Problèmes rencontrés via du SQL:
  • Arborescence récursives et modèle relationnel.
  • Performances sur un volume de données importante.
  • Clarté métier pour récupérer les valeurs.
 Et c'est à ce stade que le NoSQL a attiré notre attention.

Qu’est-ce que le NoSQL ?

Le NoSQL, pour "not only SQL", désigne les bases de données qui ne sont pas fondées sur l'architecture classique des bases de données relationnelles.
Elles ont été conçues pour résoudre les problèmes de traitements de données en volume, multi-sources et multi-formats, dans des environnements Big Data.

Il y plusieurs types de bases de données NoSQL, comme :

  • Bases de clef/valeur comme "Redis".
  • Les bases orientées colonnes, ressemble aux bases de données relationnelles, car les données sont sauvegardées sous forme de ligne avec des colonnes, mais se distingue par le fait que le nombre de colonnes peut varier d'une ligne à l'autre. Les solutions les plus connues sont HBase ou Cassandra.
  • Les bases orientées document, représente les informations sous forme d'objet XML ou JSON. Comme MongoDB ou bien CosmosDb.
  • Les bases orientées graphe, présentent les données sous forme de nœud et de relation. Cette structure permet de récupérer simplement des relations complexes. Un exemple de base graphe est Neo4J.
Etant dans un environnement full Microsoft nous avons penché pour CosmosDb (ou DocumentDb,  son ancien nom).

CosmosDB

CosmosDb est un service de base de données multimodèle distribué à l'échelle mondiale grâce aux services Azure.
Il permet de créer une base de données mondialement distribuée en utilisant l'une des API ci-dessous:


Dans notre cas nous sommes partis avec l'API SQL.

Mise en place

Nous sautons la partie création de la base dans Azure, que vous pouvez retrouver dans la documentation ci-dessous:

Documentation

Si vous avez bien suivi, la structure des données stockés dans CosmosDb est en format J..N
---> JSON et pas JOHN.

Et nous attaquons le vif du sujet, les données et l'intégration dans le code .Net/C#.

Nous prenons, l'exemple de structure d'un inventaire nommé "Entity" (propriété "objectType") et de type structure (propriété "entityType") défini par un énum dans le code C#.
De plus on remarque la propriété "Children" qui contient l'arborescence d'éléments expliqué précédemment.



En résumé nous pouvons en déduire que le premier élément est l’inventaire père "Généralité" qui contient des sous éléments, que l'on appellera enfants : 
  • id 10, "Lave-linge" de type checkbox (propriété "TypeName").
  • id 11, "Sèche-linge" de type checkbox.
  • id 12, "Salle de Fitness" de type collapse avec du texte.
Maintenant, il faut récupérer cette structure dans le code:


Nous passons la partie d’instanciation du client que vous pouvez trouver dans la doc avec la configuration.

Voici à quoi ressemble l'objet Entity:

Classe Inventaire:

Et voilà, maintenant vous pouvez construire vos différentes admins.
Exemple de l'admin paramétrage de la structure


Exemple de l'admin de saisie des données de la structure

Commentaires

Posts les plus consultés de ce blog

Comment binder différentes implémentation d'un modèle avec ASP.Net MVC 5 ?

Les Progressive Web Apps

Gérer la configuration des machines virtuelles avec Azure Automation et PowerShell DSC