Que ceux qui n'aiment pas les graphes quittent immédiatement ce journal.
Je travaille sur Mobilizon, le logiciel développé par Framasoft, pour s'affranchir de Faïcebouc dans l'organisation de groupe et d'événements.
Je voulais avoir une représentation graphique du modèle de données. Pas à la main bien sûr, mais construit à partir de la base de prod.
Comme j'utilise au quotidien SquirrelSQL et qu'il a un plugin graph, essayons :
Pas terrible. Direction un moteur de recherche web.
Je trouve DBeaver (basé sur la plateforme Eclipse) et me dis que décidément, le DBA aiment les rongeurs. J'installe, je branche sur la DB, et voilà.
Beaucoup plus lisible mais pas encore au niveau que je souhaite.
Je crois lire que DBeaver ou un autre utilise graphviz pour faire le placement. Et je me dis que finalement un outil qui se connecte à la DB, récupère le tables et les relations et pond un script dot serait plus proche de ce que je cherche. Et bien cela existe, ça s'appelle SchemaCrawler.
Un download+extract et quelques ajustements de la ligne de commande - schemacrawler.sh ... --command=schema --load-row-counts --table-types=table ... --output-format=scdot
- après, j'obtiens un fichier dot que je peux retoucher un peu et convertir en image :
Joli, hein ?! Pour avoir un rendu correct, il faut 5000px de large alors, il faut zoomer un peu. Mais j'ai testé le rendu sur du A3 et c'est vraiment utilisable.
À noter que j'ai exclus quelques tables pour plus de lisibilité. Cela se fait dans la ligne de commande.
Cerise sur le gâteau, sc ajoute le nombre de lignes de chaque table. Utile pour avoir une idée du poids de chacune.
Et vous, comment auriez vous fait ?
Happy graphing !
# Besoin récurrent
Posté par Christie Poutrelle (site web personnel) . Évalué à 5.
Hello, merci pour le partage d'expérience, c'est un besoin récurrent que l'on a aussi.
Dans les outils qui peuvent parfois sortir quelque chose de convenable, il y a pgadmin (pour postgresql) MySQLWorkbench (pour MySQL), et sinon de mon côté, vu qu'on utilise un DBAL (DataBase Access Layer) custom qu'on maintien sur nos projets, je rejoints ta solution et utilise un générateur de GraphViz branché sur un visiteur qui parcoure le schéma (outillage intégré à notre DBAL).
Par contre, j'ai toujours beaucoup de soucis avec dot, je n'arrive jamais à trouver un jeu d'options correct pour afficher convenablement les graphs, as-tu des options particulières à conseiller ?
[^] # Re: Besoin récurrent
Posté par steph1978 . Évalué à 4.
On peut vite arriver à une combinatoire ingérable avec les options de Graphviz.
ScemaCrawler, si le rendu te plaît, en positionne très peu :
Je réponds quelques fois sur SO.
Il est possible aussi de jouer avec le moteur de rendu : dot, neato, circo, fdp. À adapter selon l'usage. Ici j'utilise dot.
Mais je n'ai rien de magique si ce n'est tâtonner 🪄.
[^] # Re: Besoin récurrent
Posté par Christie Poutrelle (site web personnel) . Évalué à 1.
Je m'attendais un peu à cette réponse, mais merci pour les pistes, je vais me garder ça dans un coin au chaud, surtout schema crawler qui l'air de mettre des options pas trop idiotes.
Merci !
# Pour LinuxFr.org
Posté par Benoît Sibaud (site web personnel) . Évalué à 9.
pour linuxfr.org, je m'étais rabattu sur draw.io (donc très manuel, mais je voulais de toute façon ajouter des précisions à divers endroits) :
https://github.com/linuxfrorg/linuxfr.org/blob/master/db/schema.png
https://github.com/linuxfrorg/linuxfr.org/blob/master/db/schema.drawio
[^] # Re: Pour LinuxFr.org
Posté par Christophe B. (site web personnel) . Évalué à 4.
+1
Draw.io est pour moi l'excellent outil qui manquait sous linux
Mais j'ai du mal a savoir si cet outil est et va rester libre d'utilisation ?
[^] # Re: Pour LinuxFr.org
Posté par Benoît Sibaud (site web personnel) . Évalué à 4. Dernière modification le 29 mars 2021 à 11:59.
https://github.com/jgraph/drawio
https://www.diagrams.net/blog/move-diagrams-net
[^] # Re: Pour LinuxFr.org
Posté par steph1978 . Évalué à 3.
C'est clean !
J'aurai pas aimé devoir le faire à la main ;)
J'aime bien drawi.io aussi. Je le trouve très productif. Je le vois souvent en entreprise, en shadow it d'une suite msoffice déplorable sur les diagrammes.
Fut un temps j'aimais bien Yed mais le format n'est pas libre (ou faussement libre) et je le trouve moins productif que drawio.
J'aime peut être encore plus plantuml. Qui lui aussi s'appuie sur graphviz pour le positionnement. Qui s'intègre avec beaucoup d'outils dont vscode pour la création et mkdocs pour la publication. Et puis ça se versionne très bien dans un git.
[^] # Re: Pour LinuxFr.org
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Presque, je n'ai jamais réussi à avoir un espacement à gauche entre la bordure et le texte… mais bon l'esthétique n'était pas forcément la priorité quand j'ai eu besoin du schéma.
[^] # Re: Pour LinuxFr.org
Posté par Mathieu CLAUDEL (site web personnel) . Évalué à 3.
Pour plantuml, j'ai trouvé ça pas plus tard que le semaine dernière : https://github.com/Hywan/Database-to-PlantUML
Il faut penser à augmenter la taille max de l'image si on veut que les grosses DB rentre.
# Merci beaucoup
Posté par Christophe B. (site web personnel) . Évalué à 3.
Super info
Merci beaucoup
# Et pour les très grosses bases...
Posté par Dring . Évalué à 8.
Le problème qu'on avait ici, c'était qu'on a des vieilles applications qui n'ont pas 20 ou 30 tables, mais plutôt 200 ou 300 (voire plus). Et que beaucoup d'entre elles n'ont pas de contraintes d'intégrité.
Et c'est surtout celles là qu'on veut documenter, car quand on arrive sur un tel projet, c'est l'enfer pour comprendre le modèle.
Au final, on ne peut donc pas s'appuyer directement sur un outil qui extrait les metadatas ; et on ne peut pas tout représenter sur un seul graphe - ça n'aurait aucun sens et n'apporterait aucune aide.
Donc il faut toujours une étape manuelle de manipulation du résultat pour le splitter deux catégories de graphes :
1) les graphes par domaine fonctionnel ; où tu montres même parfois seulement les tables principales, ou alors tu ne détaille que les tables principales - pour les autres tu ne montre que les attributs de clé primaire voire quelques attributs sélectionnés par un être humain.
2) les graphes globaux ; où tu représente très grossièrement chaque domaine fonctionnel et tu mets en exergue les tables qui sont transverses et importantes.
Autrement dit, tu utilises un outil de génération pour le début du travail, mais après c'est tout à la mimine. Et souvent, tu vas te retrouver à maintenir totalement à la main… Avant je faisais ça avec des gros outils propriétaires (PowerDesigner), mais ça finit toujours par être abandonné.
Encore autrement dit : à ce jour je n'ai pas trouvé de bonne solution. Le taux de travail manuel était pour moi un bon indicateur de "quelle quantité de travail est nécessaire pour remettre cette base d'applomb"…
[^] # Re: Et pour les très grosses bases...
Posté par steph1978 . Évalué à 3. Dernière modification le 29 mars 2021 à 11:43.
SchemaCrawler permet d'inclure/exclure des tables par regexp. Ça peut permettre de créer des graphs certes incomplets mais plus lisibles.
[^] # Re: Et pour les très grosses bases...
Posté par eric.zapletal . Évalué à 1.
Pour les très grosses bases de données (> 1000 tables) il y a SchemaSpy : http://schemaspy.org/
EZ
[^] # Re: Et pour les très grosses bases...
Posté par Christophe B. (site web personnel) . Évalué à 3.
Cela ressemble fortement à l'ERP qui me fait vivre … ( il y a un X dans le nom et le chiffre 3 )
Tu as été puni pour être obligé de développer sur ce genre de truc :)
# Créer un MDP sexy avec quel outil ?
Posté par stopspam . Évalué à 3.
Journal très intéressant car j'ai ce besoin de gérer mon graphe de mon modèle physique de données.
Je n'ai pas besoin de génération automatique car comme dis dans un commentaire plus bas, les bases sont tellement grosses qu'il faut regrouper en domaines fonctionnels et rajouter des infos partout !
A ce jour, j'utilise encore DIA pour avoir un qqch de potable visuellement https://ibb.co/f1HJFgK. J'ai déjà lorgné sur draw.io mais c'est très moche. Et les outils sympa existants sont tous payants ou liés à un service web qui peut disparaitre du jour au lendemain.
[^] # Re: Créer un MDP sexy avec quel outil ?
Posté par Christophe B. (site web personnel) . Évalué à 3.
Peut être pour le modèle physique des données
mais sinon Draw.io permet de faire de très joli chose
Honnètement je suis passé de Visio à Draw.io plus rapidement que ce que je pensais, et je le regrette pas :)
mais bon mes dessins sont surtout des schémas d'infra structure logicielle a destination de presque informaticien … pour rester dans le politiquement correct
[^] # Re: Créer un MDP sexy avec quel outil ?
Posté par freem . Évalué à 4.
Dia… j'aimais bien aussi, et je l'utilise encore de temps en temps, mais j'en suis largement insatisfait, tout en n'ayant rien trouvé de mieux…
Énormément de place est gâchée par les barres d'outils et règles, qu'il faut virer à chaque démarrage de l'application.
L'édition de chaque table demande une utilisation trop importante de la souris, c'est long, très, très long pour juste modifier un champ (d'un autre côté, c'est un éditeur de diagramme, pas d'UML ni de merise. M'enfin quand même, le dialogue de modif pourrait être moins pire…).
Les relations sont… bon, c'est soit se les tapper et les maintenir à la main (genre, chaque angle, et refaire au moindre déplacement) soit avoir un truc difficilement lisible.
De même, impossible de savoir quand 2 relations se croise s'il s'agit d'une fourche (plusieurs relations qui avant avaient le même trajet se séparent) ou si l'une "passe au-dessus" de l'autre.
Bref, je l'utilise à défaut de mieux, mais j'aimerai trouver mieux. Par contre, j'insiste pour que l'outil soit installable facilement en off-line, parce que le réseau quand il lâche, c'est bien de pouvoir accéder aux graphes qui le documentent, ou le modifier :)
Il y a longtemps j'utilisais Bouml, mais ça ne sert que pour l'uml d'une part, et d'autre part, c'est trop compliqué pour 90% des usages que j'en aurai, l'interface se mets également dans les pattes de l'utilisateur je trouve. J'imagine que pour un gros, gros logiciel ça peut servir, cependant.
Sinon, je serais curieux de savoir ce que les gens qui gèrent des réseaux (LAN/WAN) utilisent, pour documenter liens physiques, emplacements des services, ce genre de choses? Dia peut faire le boulot en partie, mais c'est assez limite je trouve.
# Django-extensions
Posté par François GUÉRIN (Mastodon) . Évalué à 1.
Salut,
Je travaille au quotidien avec Django, il y a une appli très utile qui s'appelle django-extensions, il fait ça très bien depuis au moins 6-7 ans, en utilisant graphviz aussi.
… du coup, à chaque fois qu'on me parle de graphes, je sors plot / graphviz !
Courage !
# yed graph editor
Posté par Red_pheonix . Évalué à 1.
Bonjour,
Pour ma part j'utilise DBWeaver , dans lequel je crée un graphe sommaire que j'exporte au format graphHML , qui est ensuite ouvert avec yed graph editor ( assez léger et gratuit ) , qui permet de retravailler l'aspect visuel tant au niveau des couleur, de la police , du placement et insertion d’icône, d’objet UML ,… et permet une sortie au format image , HTML avec l’insertion éventuel de code , de référence vers des données , … pour obtenir un peu d'interactivité .
# SchemaSpy
Posté par eric.zapletal . Évalué à 2.
Pour les grosses bases de données (même plus de 1000 tables) il y a un outil très pratique : SchemaSpy
http://schemaspy.org/
EZ
# Equivalent de MySQLWorkbench
Posté par Ant . Évalué à 1.
Tous ces outils sont super intéressants, quand on a déjà réalisé son modèle physique.
Je cherche quant à moi un équivalent de MySQLWorkbench, qui marcherait avec django (je suis néophyte sur Dango).
Quelqu'un connait cela ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.