J'ai fait une comparaison entre ces SGBD. J'ai utilisé Sybase, SQL Server et Oracle. J'ai fait une comparaison théorique entre PostgreSQL et SQL Server.
Si le multi-plate forme est ton premier critère, aussi bien t'enligner sur Oracle/Sybase mais ils sont dispendieux. Je ne sais pas si ils sont en train de reviser leur mise en marché. J'ai entendu dire que oui dans le cas d'Oracle.
SQL Server et Sybase se ressemblent beaucoup sur l'interaction avec la base de donnée. SQL Server est un descendant philosophique de Sybase, en ce sens qu'il est né d'une association entre Microsoft et Sybase qui croyait ainsi se tailler un avenir via un entrée par la micro-informatique (l'équivalent micro d'Oracle à la même époque était affreux). Depuis ils ont mis fin à leur association, Microsoft a réécrit entièrement l'engin, qui roule très bien, et possède un excellent optimiseur de requête. Je ne sais pas si Sybase a bien évolué depuis le temps.
Le langage de requête de SQL Server est très bien et est très prometteur pour la version SQL 2005. Il règle plusieurs problèmes qui datent depuis des lunes avec le langage SQL. Ce qui est bien avec SQL Server c'est qu'on peut indiquer précisément à l'optimiseur comment résoudre sa requête, lorsque l'optimiseur n'y arrive pas. Avec Oracle7 il y a des indices qu'on peut lui fournir, mais il n'écoute pas toujours. Avec Oracle8 et au dessus c'est à réévaluer. Avec Sybase je ne sais pas. Avec PostgreSQL la façon de contraindre l'optimiseur ne nous garantit pas le résultat.
En ce qui concerne la performance, SQL Server se débrouille assez bien, même avec des très grosses BD.
Au sujet de PostgreSQL, il ressemble à Ingres, avec des concepts intéressants. Cependant l'ordre de grandeur des investissements faits dans l'optimiseur de requête est faible en comparaison de ce que les produits commerciaux font. Donc comment se comporte son optimiseur face aux requêtes complexes est à démontrer.
Si j'insiste tant sur l'optimiseur, c'est que le gros de mauvaises performances des applications utilisant le langage SQL viennent de mauvaises optimisations de requêtes. Un optimiseur qui rate plus souvent son coup te donnera plus de maux de tête.
Une requête complexe bien optimisée fait plus rapidement le travail que les milliers de petites requêtes qu'il faut faire à la place. De plus cela t'évite de programmer les boucles de code et les structures plour stocker des résultats intermédiaires. Donc si ton serveur est capable faire l'algorithme d'obtention des données à ta place, c'est payant. Pour ça il faut qu'il soit capable bien optimiser ses requêtes.
SQL Server possède pour diagnostiquer la partie requêtes d'une application, un excellent traceur de requêtes (avec filtres, plan d'accès, requêtes durées, deadlock etc etc. SVP). J'ai commencé à chercher l'équivalent dans PostgreSQL. Il ne semble pas y avoir d'outil équivalent. Un tel outil est essentiel dans le déboggage d'applications client-seveur. Cela permet qu'on puisse faire de la recherche de problème dans une application, sans qu'on ait à utiliser un déboggueur.
J'ai cessé de travailler avec Oracle depuis la version 7. A l'époque il fallait acheter des produits complémentaires si on voulait faire facilement une trace des requêtes au serveur. En gros, sans cet outil, il fallait pas mal travailler pour faire l'équivalent du diagnostic qu'on arrive à faire avec SQL Server. Si on a besoin d'envoyer un scénario de trace à un client, c'est très facile avec SQL Server.
SQL Server offre des outils de gestion très faciles à employer avec un céduleur de tâches de maintenance de la BD. Microsoft à l'avantage de n'avoir qu'à développer que pour Windows... Oracle et Sybase ont de moins bon outils. Peut être Sybase s'est amélioré depuis.
Si tu as un petit environnement, MSDB c'est la version gratuite de SQL Server, sans ses outils graphiques (mais il existe du freeware qui le fait). MSDB est parfaitement compatible avec SQL Server parce que c'est SQL Server, avec un barrure sur la performance, à partir de cinq requêtes actives en même temps. En gros ça peut supporter une vingtaine d'usagers en même temps avec une très bonne performance. Ensuite c'est fait exprès pour ne pas aller trop vite. Microsoft veut vendre sa BD si l'application et votre clientèle sont gros. Un truc : vous vous achetez la version SQL Server developper edition, cela vous donne accès à tout comme développeur, et dans un environnement de développement. POur déployer l'application, vous pouvez utiliser MSDE si le client est petit, ou SQL Server Standart Edition s'il est gros.
Un dernier point extrêmement important. La documentation. SQL Server possède une documentation en-ligne supérieure à ses concurrents. Cela est très important pour avoir le pourquoi et le comment de ce que l'on essaie de faire. Il y a beaucoup de sites pour avoir de l'aide et le SQL Server Magazine.
Je crois que Oracle doit aussi avoir une grosse communauté de développeurs.
La doc. de PostgreSQL est moins invitante.
SQL Server est de loin le meilleur produit jamais développé par Microsoft. C'est un produit très stable. On peut trouver de temps à autre des gens qui se plaignent, mais c'est l'exception. Je crois pour ma part qu'il s'agit de gens qui ont des problèmes de compétence avec SQL Server, ou plus simplement avec le SQL.
Sybase est sans doute plus "user-friendly" que Oracle, mais on s'inquiète un peu pour son avenir, sa part de marché semblant ne pas grossir très vite.
PostgreSQL a une communauté intéressée à le faire progresser, il est vrai, mais je pense qu'il est douteux qu'il arrivent à le faire progresser aussi vite que les gros joueurs tels Oracle, Microsoft SQL Server, IBM (db2), tout simplement parce que ces trois derniers sont en grosse compétition, et qu'ils n'ont pas le choix d'investir leur revenus dans la progression de leur SGBD respectifs.
Par exemple Oracle 10g est un gros investissement d'Oracle pour simplifier l'utilisation d'Oracle qui a toujours été pas mal plus compliqué à utiliser que SQL Server. A la base il a une plus vieille architecture avec beaucoup de boutons d'ajustements si on peut dire. Oracle est conscient de ce désavantage et essaie d'y palier. IBM travaille aussi en ce sens. La raison : Microsoft accroît sa part de marché à leur dépends. Mais dans les trois, le marché grossit, car les SGBD relationnels sont de plus en plus utilisés.
SQL 2005 (la version bétâ) offre déjà pas mal de fonctionnalités qui vos assister le développement de services Web, le développement de requêtes, les traitements asynchrones, letraitement du XML et le dévelopement de code serveur. Je crois que les compétiteurs ont aussi des offres à faire de ce côté.
C'est un marché en bonne santé. Comme développeur cependant et comme responsable du soutien je me sens plus à l'aise avec SQL Server.
En dernier lieu, pour nous francophones, Microsoft supporte admirablement bien la langue française, aussi bien dans la Doc, que dans le logiciel, et surtout dans les règles de comparaison des caractères. Par exemple il est capable de rechercher dans la BD en faisant abstraction de l'accentuation et de la casse (comme Sybase aussi). Essayez de faire la même chose de manière performante avec PostgreSQL, Oracle ou DB2.
On voit que Sybase / Microsoft SQL Server sont des produits bâtis sur une architecture plus récente. Les autres ont dû évoluer avec ce qu'ils avaient à la base.
En dernier l'aspect intégrité/recouvrement des données est très simple avec SQL Server (on peut faire du point-in-time recovery) très facilement. Le recouvrement Point in time est souvent requis lorsque les usagers ont fait des erreurs de manipulation dans les productions de leurs application.
Sybase permet quelquechose de similaire, mais je ne sais pas si il est aisé de le faire. Oracle aussi, mais c'est plus compliqué. En ce qui concerne PostgreSQL il n'en est pas fait mention dans la doc. Je dois dire à leur décharge qu'il me reste sans doute à approfondir mes lectures sur PostgreSQL. Mais à date, il ne semble pas y avoir de gros paragraphes la dessus. Ça me donne à penser que ça n'existe pas sur cette plate-forme, mais c'est à vérifier.
Je ne parles pas de MYSql car il s'agit d'un produit qui a été conçu pour des besoins simples, mais à mon point de vue il est en dessous des autres, à moins que ce qu'on veut faire soit assez simple et ne risque pas de trop se compliquer.