Logiciel : PostgreSQL 8.1 disponible
Posté par Xavier Poinsard (page perso, ). Modéré le 09 novembre 2005.
La nouvelle version du plus complet des SGBD libres est disponible.
Cette version apporte de nouvelles fonctionnalités comme le "commit à deux phases" ou les paramètres IN / OUT pour les fonctions. Elle contient également de nombreuses améliorations concernant les performances : bitmap index, shared row lock, partitionnement de tables.
Il est savoureux de constater que c'est également aujourd'hui que Computer Associates a annoncé la mise en Open Source de sa base de données Ingres.
NdM : merci à François Suter pour avoir également proposé une dépêche à ce sujet.
Cette version apporte de nouvelles fonctionnalités comme le "commit à deux phases" ou les paramètres IN / OUT pour les fonctions. Elle contient également de nombreuses améliorations concernant les performances : bitmap index, shared row lock, partitionnement de tables.
Il est savoureux de constater que c'est également aujourd'hui que Computer Associates a annoncé la mise en Open Source de sa base de données Ingres.
NdM : merci à François Suter pour avoir également proposé une dépêche à ce sujet.
La traduction de l'annonce officielle (1083 hits)
Miroirs (255 hits)
Bittorrent (138 hits)
Notes de version (227 hits)
> Lire la dépêche (71 commentaires, moyenne: 4,1).
Vous avez demandé le commentaire #647132.




Avantage pour un néophyte ?
Je profite de cette nouvelle version pour poser une question qui me tarabiscote depuis longtemps :
Est-ce que PostGreSQL apporte un gain par rapport aux autres solutions libres comme MySQL pour un débutant, c'est à dire qui ne maitrisera pas les fonctions avancées.
J'ai cru comprendre que sa spécialité était les relations "complexes" entre les tables, mais je ne sais pas trop ce qui est complexe et ce qui ne l'est pas. Est-ce que les relations des tables d'un forum bourré d'options sont "complexes" ?
[^]Re: Avantage pour un néophyte ?
Non! Clairement, quand on est débutant sur l'un des 2 systèmes, on utilise uniquement des fonctionalités simples, on traite des petits volumes de données, et on gère peu d'utilisateurs simultanément. Par conséquent, on est loin d'atteindre les limites d'un système ou d'un autre, et il est alors évidemment plus simple de continuer à utiliser le système qu'on connait.
[^]Re: Avantage pour un néophyte ?
Euh, pas d'accord: il me semble que PostGreSQL est plus "stricte" dans sa gestion des champs que MySQL, ce qui me parait préférable pour détecter des erreurs.
Maintenant je ne suis pas un expert ni dans l'un ni dans l'autre..
[^]Re: Avantage pour un néophyte ?
Je suis assez d'accord avec reno. Il y'a quelques trucs non standards dans MySQL qui sont parfois très genants, en vrac:
- Tu fais un update du genre:
update table1 set result = 'OK' where val = '10';
avec MySQL, si tu as 10 tuples (lignes) avec result val = '10' et que tu as déjà 3 lignes avec result = 'OK', MySQL te dit qu'il a modifié 10 tuples...
Super chiant dans certaines applis pour vérifier que tu as bien modifié ce que tu voulais. Les autres BDD auraient retourner 10 lignes modifiées.
- Tu fais un update (encore) du genre:
update table1 set date = '2005-12-32';
MySQL accepte sans broncher, alors que la date n'est pas valide (32 décembre).
Idem si on essaye de mettre un chaine de 20 caractère dans un varchar(10), pas de problème... Sauf que du coup la chaîne est tronquée et tu ne t'en rends pas compte.
Bref, au moins avec postgres tu limite ce genre de mauvaise surprises...
[^]Re: Avantage pour un néophyte ?
Les autres BDD auraient retourner 10 lignes modifiées.
Tu voulais sans doute dire 7, non?
Subete ga wakatta toki…watashi ga anta wo korosu.
[^]Re: Avantage pour un néophyte ?
Les SGBD doivent retourner 10 sauf si la requête est
update table1 set result = 'OK' where val = '10' and not result='OK'
[^]Re: Avantage pour un néophyte ?
En ligne de commande, MySQL va te sortir le nomber de lignes qui correspondent a ta requete, et le nomber de lignes modifiés. Donc tu as les deux informations. Si tu utilise l'API C, il y a une option pour avoir soit le nombre de 'match' ou le nomber de lignes modifiés.
W-Fenec : Webzine rock/métal/indus
[^]Re: Avantage pour un néophyte ?
Sans doute intéressant, mais non standard.
Ainsi de nombreuses applis développées pour MySql sont difficilement portables vers d'autres SGBD.
[^]Re: Avantage pour un néophyte ?
Comme déjà indiqué plus haut, c'est au contraire un comportement standard. Concernant les "autres BDD", je sais que Sybase au moins fait la même chose ; il me semble que Firebird/Interbase aussi.
D'autre part, je ne vois pas trop l'intérêt de vérifier que le nombre de ligne modifiées correspond, sauf dans le cas où il n'y en a qu'une.
Soit ça marche, soit ça échoue ; et c'est normalement tout ce que tu as à savoir.
Non, rien.
[^]Re: Avantage pour un néophyte ?
La question concernait le besoin (ou non) de passer de MySQL à PostgreSQL pour un débutant. Alors oui, PostgreSQL est plus strict sur les vérifications de dates. On peut aussi trouver à MySQL des bons points qui font défaut à Postgres.
Mais pour un débutant, ces petites différences ne justifient pas de tout remettre à plat, de tout remettre en cause. Déjà, s'il est vraiment débutant, je tire mon chapeau s'il stocke ses données de dates sous un format de données de type "Date/time". Quand j'ai commencé sous MySQL il y a 5 ans, j'aurais sans doute pu le faire, mais j'ai utilisé des chaines de caractères parce que c'était tellement plus simple et suffisant. Rappelez-vous, les gars! dé-bu-tant!
[^]Re: Avantage pour un néophyte ?
ne justifient pas de tout remettre à plat, de tout remettre en cause
Enfin c'est quand meme du sql a la base . C'est pas completement incompatible. Non?
Subete ga wakatta toki…watashi ga anta wo korosu.
[^]Re: Avantage pour un néophyte ?
Le problème avec MySql c'est sa syntaxe pas très standard, notamment pour la création de tables.
Travailler avec PostgreSql permet d'être ensuite à l'aise avec la plupart des bases de données.
[^]Re: Avantage pour un néophyte ?
avantage pour un néophyte : étant donné que la cohérence des données est garantie grâce à la prise en charge des clés étrangères, cela t'oblige à faire tes requêtes correctement, dans le bon ordre. Bref, ça apporte de la rigueur.
Si ton programme modifie une donnée qui ne doit pas l'être (mettre un id de categorie qui n'existe pas dans un enregistrement de produit par exemple), postgresql va raler car ce n'est pas normal. C'est donc des bugs vite détéctés.
Mysql ne va pas raler et va laisser faire (sauf si tu utilises des tables Innodb, mais ce n'est hélas pas le format par défaut et les développeurs choisissent implicitement MyIsam, qui ne prend donc pas en charge les clés étrangères)
[^]Re: Avantage pour un néophyte ?
Voici un exemple simple : Soit une base de données pour gérer les comptes des client d'une banque. Une table sert à déclarer les comptes (une ligne par client) et l'autre sert à déclarer les mouvements (crédit/débit).
Dans la table clients, chaque compte ne peut exister qu'une fois. Cette contrainte d'intégrité se nomme primary key ou clé primaire.
On ne peut faire des mouvements que sur des comptes existants. Donc dans la table des mouvements, on va déclarer que le numéro de compte doit exister dans la table des clients; on la nomme foreign key ou clé étrangère.
L'énorme intérêt d'une base de données avec des contraintes d'intégrité fortes, c'est que l'on peut modifier les données avec tous les outils que l'on veut sans risquer de perdre leur cohérence, même sur un bug de programmation.
L'intérêt des fonctions et des triggers est le même : on déclare que lorsqu'on insère/modifie/supprime quelque chose dans la base de données, on exécutera la fonction qui vérifiera/modifiera/archivera/etc les données. Par exemple, si je gère du matériel, le moteur A est dans le stock, casier X. Je le confie au labo d'essais.
Dans la base de données il y a le lien (moteurA)-(stockX) Je modifie avec (moteurA)-(labo essai). Le trigger va alors appeler une fonction qui va stocker dans une table historique que :
- (moteurA) est enlevé de (stockX) par Mr Machin à telle date.
- (moteurA) est associé à (labo essai) par Mr Machin à telle date.
- (stockX) a un (moteurA) de moins certifié par Mr Machin à telle date.
- (labo essai) possède (moteurA) certifié par Mr Machin à telle date.
Je peux vous assurer que lorsque l'on a des milliers d'éléments dans une base de données, un défaut d'intégrité tel que (moteurA) n'est pas à l'endroit indiqué, est bien plus difficile à corriger qu'un bug dans un programme.
J'espère que ces lignes permettront à ceux qui ne sont pas familiarisés avec les contraintes d'intégrité de mieux en percevoir l'intérêt.
[^]Re: Avantage pour un néophyte ?
Certes pour un néophyte les 2 produits se valent mais tout dépend si on compte rester débutant ou évoluer au fûr et à mesure que les applications que l'on envisage d'écrire vont se complexifier.
Dans la mesure où les 2 produits ont une durée d'aprentissage équivalente mieux vaut dès le départ choisir celui qui aura le maximum d'évolutivité. Dans ce cas PostgreSQL a montré depuis des années sa plus grande richesse fonctionnelle. Le choix me semble vite fait.