bon je cherche un soft si possible open source.
Pour versionner une db , schemas et requetes dessus et avec une possibilité de faire de la doc sur la db au passage
merci
bon je cherche un soft si possible open source.
Pour versionner une db , schemas et requetes dessus et avec une possibilité de faire de la doc sur la db au passage
merci
Qu’est-ce que tu souhaites versionner : les logs de la base (tout le SQL qui passe, en supposant que c’est une base SQL) ? ou les scripts au sens “initialisation de la base” / “upgrade de version” ?
Si c’est ce que je pense, à savoir plutôt le second point orienté équipe de dev pour pouvoir relivrer une base de manière prédictible, alors un simple Git te suffirait, avec un projet associé à tout ce qui concerne l’admin de la base de données. Ce que je fais en général c’est que je range séparément les scripts qui impactent les données, les scripts qui impactent la structure, et les confs, et je tag à chaque livraison. Pour la doc (FAQ, release notes, procédures d’install…), je mets en place un wiki.
C’est un combo simple qui fait ses preuves, et sur lequel il y a moyen de construire pas mal de choses automatisées, par exemple en mettant aussi dans le projet Git un répertoire de scripts d’installation (en général je fais ça en python) : tu fais le git clone sur le serveur où tu veux faire ton installation / ta mise à niveau, tu te mets sur le tag / la branche qui correspond à l’état que tu veux de la base, puis tu lances les scripts qui font le reste du boulot (générer/restaurer la structure, importer des données, analyser l’état de la base ou que sais-je encore).
Et si tu configures ton wiki en WebDAV alors tu peux aussi retrouver ta doc depuis la ligne de commande (et donc l’utiliser depuis des scripts que tu as dans Git, notamment pour déposer des releases notes ou de la doc en direct sur le serveur), tout en faisant en sorte qu’elle soit en ligne.
Etape encore plus automatisée, tu mets ça dans un Puppet ou un Chef ou autre.
Sur les bdd il y a un truc surpuissant : c’est le journal des transactions. Si c’est bien configuré au départ, tu peux reversionner et reconstruire tout à partir de rien. Pas de soft supplémentaire à installer, juste à penser à faire des backups réguliers pour tout avoir en cas de pépin.
Je ne suis pas forcement claire pardon
Alors le truc, c’est que l’on a une base qui bouge tres vite en dev a la fois dans sa structure et ses données.
On a tous une version locale d’une base de donnée.
Donc le but serait d’avoir un soft ou une astuce qui nous permette de :
Partager les changements de struture.
Si quelqu’un modifie une table par exemple la table Client en rajoutant un champs Situation familliale que tout le monde puisse avoir la modif et le foutre sur sa db locale.
(chez nous ca se fait en script sql surtout).
Si quelqu’un rajoute une ligne dans la table client Mr Toto pour nos tests en interne que tout le monde puisse l’avoir pour leur tests sur leur base locale.
A coté de cela si l’outil peut permettre de générer de la doc ou de l’ecrire, je prends.
merci
Histrion & le : je vais creuser dans vos directions merci.
Source control + scripts. Script de creation de zero ET script d’update a chaque version checked in. On fait ca tout le temps.
Désolé petite question qui peut paraitre bete mais j’ai du mal à comprendre : tout le monde a sa propre base locale mais il y a besoin qu’elles soient synchro entre elles ? Pourquoi ne pas tout mettre sur la même bdd pour tout le monde ? PB d’accès concurrents ? Ou c’est qu’il faut valider les modifs avant de les partager ?
[quote=“astrojojo, post:6, topic: 55525”][/quote]
C’est souvent mieux (si tu peux te le permettre au niveau ressources) de travailler en environnement isolé et de ne partager avec le reste de l’équipe que les choses que tu as pu tester. Ca marche pour le code, mais aussi pour les bases de données, la conf logicielle ou système etc. car partager des choses instables c’est potentiellement casser l’environnement de quelqu’un d’autre.
[quote=“Bussiere, post:1, topic: 55525”][/quote]
Power AMC (avec l’option référentiel partagé) ? Mais c’est super cher (mais super bien).
En tout cas il faut chercher un équivalent de Power AMC. Quand j’en avais cherché il y a quelques années en open source ce n’était que pour du travail en local sans versionning et trop simple. (AnalyseSI)
Regardes là Framasoft: Logiciels libres, Développement, Base de données. On dirait que DBdesigner 4, ou son descendant (dont ils parlent dans les commentaires), que je n’ai pas testé pourrait convenir à tes besoins puisqu’ils parlent de versionning dans la description. Mais je crains qu’en open source il n’y ait pas grand chose, à moins de faire comme dans les messages précédents, faire du versionning sur des fichiers SQL avec un CVS quelconque (autrement dit non spécifique à de la base de données).
[quote=“astrojojo, post:6, topic: 55525”][/quote]
Le truc c’est que imaginons que toi chez toi dans ton coin, tu utilises selenium (un truc qui clique partout en navigateur) pour faire tes tests.
Et que un autre dev rajoute 10 000 utilisateurs ou 10 000 objets, bah du coup ca plante ton script de test.
Un autre exemple si quelqu’un a une erreur en dev, il peut partager son cas d’erreur (son insert a tout le monde).
Et plusieurs personnes qui dev sur le meme truc c’est trop bordelique, si on fait du source control sur code ce sont les meme raison sur une db (schema et données).
Et Liquibase, ça t’allait pas ?
[quote=« Twin, post:10, topic: 55525 »][/quote]
on ne peut pas faire la doc en meme temps (sauf si je me plante hein, j’ai pas creusé plus que ca) c’est le truc qui manque le plus.
Tu peux mettre des commentaires sur chaque modif, à la manière d’un gestionnaire de version, mais en effet ça ne va pas très loin pour autant que je sache.
en meme temps, la doc, c’est pas le boulot de liquibase, ni prévu dans le language SQL. Y’a d’autres outils pour ca j’imagine.
En attendant, on utilise Liquibase au taf, c’est tres, tres utile et très bien intégré à la forge. la migration de la base se fait automatiquement en prod sans vrai souci depuis deux ans.
Alors, une autre manière de bosser : une DB centralisée et une DB par utilisateur qui possède un synonyme pour chaque table pointant sur la base centralisée.
Si l’utilisateur veut prendre une table en local, il crée une copie en faisant CREATE TABLE AS SELECT * FROM TABLE et droppe le synonyme.
Quand il a fini de travailler il peut dropper la table et recréer le synonyme (après avoir éventuellement changé la base commune s’il veut livrer ses modifs).
[quote=“phili_b, post:8, topic: 55525”][/quote]
Ca fait plaisir que tu nommes AnalyseSI, j’avais développé ce soft à la fin de mon DUT !
Pour revenir au sujet, Liquibase c’est ce qui a de mieux, si ça ne te convient pas, je vois pas ce qui pourrait t’aider.
Nous on utilise DBV-php avec un SVN pour gérer les différences de BDD entre le local et la base central de recette.
Quand je fais un update, ca m’indique les tables qui ont été modifiées, remplies ou ajoutées et c’est moi qui décide d’exectuer les commandes en local. Dans les comments des commit, on met [DBV] et on les fait à part du code pour avoir une meilleur visibilité.
[quote=« ZGoblin, post:15, topic: 55525 »][/quote]
pas de possibilité de faire de la doc en meme temps ou tres peu …
Vu que la db change beaucoup et que du coup l’outil serait utile pour cela si on change sans documenter c’est le bordel
Les deux dans le meme outil serait pas mal.
Par exemple on change une table et on documente la nouvelle version de la table au passage.
[quote=“GloP, post:5, topic: 55525”][/quote]
Serieux, cherche pas plus loin que cette solution. Pour le reste, des dumps reguliers avec les version, un restore et zou.
Et zou!
Dans une équipe de dev avec plusieurs instance d’une même base, Liquibase fait quand même gagner un temps fou et garanti que tout le monde travaille avec la même structure.