web-dev-qa-db-fra.com

SQL Server VS Oracle

J'étudie SQL Server mais je ne connais pas grand chose à Oracle. Quelqu'un peut-il me donner une comparaison juste entre eux? J'ai lu une comparaison entre SQL Server 2000 et Oracle 9i, mais c'est un peu dépassé. SQL Server 2008 a-t-il déjà rattrapé Oracle 11g/i?

37
Vimvq1987

Juste mes 0,02 $ après avoir travaillé avec SqlServer pendant des années et Oracle depuis 4 mois maintenant.

SqlServer est beaucoup plus facile à utiliser, cela vous permet de vous concentrer sur ce que vous voulez que la base de données fasse (résoudre certains problèmes commerciaux) au lieu de lutter tout le temps avec le serveur.

Parce qu'Oracle vous oblige à configurer autant de paramètres, il existe de nombreuses façons de se tromper. Cela conduit à des discussions interminables sur le partitionnement, le type d'index à utiliser, etc. etc. Pendant ces discussions, personne ne pense aux problèmes de l'entreprise.

Une analogie: j'avais une fois un appareil photo Olympus avec un bon objectif et quelques réglages simples. J'ai fait de belles photos avec, alors je suis passé à un reflex numérique avec toutes sortes de boutons et de cadrans. Avec cela, mes photos n'étaient pas aussi bonnes parce que je me concentrais sur l'appareil photo au lieu du sujet.

Pour moi, c'est la différence entre Sql et Oracle. Sql est plus facile à utiliser et permet donc de faire plus de choses. Les idées vont du tableau blanc au code de travail beaucoup plus rapidement. Ce n'est que lorsque vous faites pression pour de très grandes bases de données qu'Oracle peut prendre le bord, mais je n'en suis même pas sûr. Je ne pense pas qu'il y ait quelque chose qu'Oracle pourrait gérer que SQL ne pourrait pas.

Edit: En outre, Oracle est très pauvre en analyse de base de données sur de gros volumes de données en raison de changement de contexte vers PL/SQL . Donc, si vous souhaitez exécuter quelques fonctions complexes sur vos données, n'utilisez pas Oracle. MS SQL, d'autre part, brille dans ce domaine car il ne souffre pas de ce problème et a également une intégration .Net.

56
gjvdkamp

Je dirais:

  • Oracle a un langage procédural bien meilleur. T-SQL ne se sent qu'à moitié fini par rapport à PL/SQL.
  • SQL Server a un bien meilleur optimiseur. Lorsque j'ai utilisé Oracle, j'ai dû faire allusion à chaque requête pour m'assurer que cela ne prenait pas une éternité, SQL Server fonctionne simplement. Il se peut que le serveur ait été mal configuré, ce qui nous amène au point suivant
  • Le serveur SQL est beaucoup plus facile à utiliser. Vous avez besoin de DBA dédiés pour administrer Oracle, mais à peu près n'importe quel bozo peut faire fonctionner SQL Server.
  • Oracle dispose d'un modèle de concurrence amélioré, plus prévisible et mieux documenté.
  • La documentation d'Oracle est supérieure à bien des égards.
  • Le serveur SQL s'intègre mieux avec .NET (comme le diable Linq2SQL).
  • Si vous utilisez Oracle, vous devez également acheter TOAD, mais le Manegement Studio inclus fera l'affaire pour SQL Server.
  • Oracle a des fonctionnalités plus intéressantes mais à peine nécessaires comme l'indexation extensible.

Si je devais choisir, j'opterais pour SQL Server en raison du meilleur optimiseur. Cependant, je ne me sens pas vraiment en sécurité lorsque plusieurs personnes utilisent les mêmes lignes dans SQL Server.

29
erikkallen

En fin de compte, il n'y a pas beaucoup de différence maintenant. Il y a très peu de choses que l'autre ne puisse faire, mais les configurations prêtes à l'emploi ont tendance à différer quelque peu.

La différence la plus évidente est qu'Oracle utilise des SEQUENCES et SQL Server utilise des colonnes à incrémentation automatique. Il y a des avantages et des inconvénients à chacun. Certains préfèrent l'un à l'autre.

D'après mon expérience, faire des requêtes Top N dans SQL Server semble un peu plus facile qu'Oracle.

Prêt à l'emploi, Oracle utilise MVCC (les données non validées ne bloquent pas les lectures par d'autres transactions - la base de données conserve une vue cohérente). SQL Server que j'ai découvert récemment ne présente que cela aussi, mais ce n'est pas l'option par défaut et s'appelle quelque chose de très différent. Niveau d'isolement des transactions ou quelque chose.

PL/SQL et T-SQL sont raisonnablement différents dans la syntaxe dans certains domaines, mais les concepts sont généralement les mêmes.

Personnellement, j'ai trouvé que SQL Server Management Studio était OK mais horrible dans certains domaines, comme son importation/exportation de données ne fonctionnait tout simplement pas avec les clés primaires à incrémentation automatique. Il s'agissait d'un bogue connu remontant à des années sur SQL Server 2005. Je ne sais pas s'ils l'ont corrigé en 2008 ou non. Avec PL/SQL Developer (ne fait pas partie d'Oracle; c'est un produit commercial distinct), les importations et les exportations étaient un jeu d'enfant.

Oracle a une limite ennuyeuse sur la colonne VARCHAR (2): limitée à 4k de longueur. Ils sont beaucoup plus longs dans SQL Server (64k?).

J'ai trouvé le modèle de sécurité SQL Server juste bizarre. TCP a été désactivé par défaut (authentification Windows uniquement) et ensuite vous avez dû configurer une connexion et un utilisateur? Je n'ai jamais tout à fait compris. Cela semblait être trop compliqué alors que dans Oracle, son juste:

CREATE USER blah IDENTIFIED BY password;
GRANT CONNECT TO blah;

Terminé (bien que l'octroi d'autres privilèges/rôles comme RESOURCE soit assez courant).

Je n'ai jamais tout à fait compris la sauvegarde/restauration du tstudio de gestion. La récupération échouerait en disant que quelqu'un était connecté à la base de données mais que quelqu'un tentait d'exécuter la récupération.

Et avant que quelqu'un ne me tente pour ce qui précède, je me rends bien compte que beaucoup d'entre eux proviennent de mon manque d'expérience SQL Server mais honnêtement, il y a toujours un niveau de cohérence (avec l'abstraction) et de portabilité des concepts qui est attendu.

22
cletus

Je ne sais pas si c'est juste, mais c'est mon expérience ayant travaillé avec les deux:

  1. Oracle semble être un peu plus "puissant" avec quelques fonctionnalités astucieuses que SQL Server n'a pas encore tout à fait rattrapées.

  2. SQL Server est BEAUCOUP plus facile à utiliser et a une bien meilleure intégration avec les produits Microsoft (si vous faites du développement .NET).

21
Eric Petroelje

Je suis développeur de logiciels. J'écris principalement des logiciels sur des bases de données (ou j'aide au moins mon équipe à le faire).

Voici ce que je peux dire à propos d'Oracle: chaque fois que je veux faire quelque chose, mon expérience passée avec celui-ci n'est pas utile pour comprendre comment faire ma tâche actuelle. J'ai passé beaucoup de temps à chercher une sorte d'explication utile d'un message d'erreur cryptique pour trouver quelques messages suggérant que l'OP contacte le support Oracle. Je viens de découvrir que leur outil d'importation de pompe de données donne des erreurs (qui étaient plutôt cryptiques) si vous avez un NOT NULL contrainte sur une colonne spatiale dans Oracle 10g. Même après avoir supprimé la contrainte, j'ai un problème où l'importation se bloque sans rien faire. En parlant de pompe à données, cela ne fonctionne que localement. Les outils d'importation/exportation qui fonctionnent à partir de machines distantes sont obsolètes. Lorsque vous avez une erreur dans votre procédure, il vous indique qu'elle n'a pas pu être compilée mais crée quand même l'objet de procédure dans un état inutilisable. Ensuite, vous devez exécuter une commande pour obtenir les erreurs. Le système d'utilisateurs et d'autorisations est médiocre. Un utilisateur est un schéma dans Oracle, mais pour tout le grand nombre d'autorisations, il n'y a aucune autorisation pour autoriser un utilisateur à accéder à tous les objets d'un schéma et pour permettre à un utilisateur de tuer une session, il faut accorder le ALTER DATABASE autorisation (qui donne probablement à l'utilisateur beaucoup plus de pouvoir que vous le souhaitez). Pour les accros spatiaux, il ne peut pas analyser les WKT qu'il génère pour SRID 3857 (il crache des nombres de la forme 0,00000e6 lorsque les coordonnées deviennent suffisamment grandes et ne peut pas analyser cette syntaxe numérique). Oui, beaucoup de ces exemples sont spécifiques, mais rencontrer ce genre de problèmes où je ne peux pas simplement faire ce que je veux faire est une expérience quotidienne pour moi, avec plusieurs problèmes qui surviennent au cours d'une seule tâche.

Je n'ai qu'une expérience limitée avec SQL Server, mais ce que j'ai fait n'a pas été aussi dur avec moi. J'ai pu comprendre les choses avec beaucoup plus de facilité et je ne me souviens pas avoir vu des messages d'erreur qui ne m'aident pas à comprendre quels sont mes problèmes. Mes collègues qui ont beaucoup travaillé avec SQL Server ont signalé une expérience similaire.

C'est peut-être juste moi, mais travailler avec Oracle semble être constamment un processus pénible et fastidieux de rechercher des erreurs étranges et d'essayer de contourner le fait que les fonctionnalités dont j'ai besoin sont manquantes et qu'il me reste à m'implémenter (comme les clés à incrémentation automatique) . Mon opinion est la suivante: peut-être qu'Oracle peut mieux fonctionner, mais seulement si vous avez le temps et l'argent pour faire fonctionner Oracle, puis découvrez comment le régler et l'argent pour que vos développeurs apprennent aussi. Oracle est tout simplement difficile à apprendre et à utiliser.

12
jpmc26

Je suis une personne SQLServer et je sais très peu de choses sur Oracle, mais à mon avis, SQLServer contre Oracle est un argument religieux. Autant demander quel est le meilleur Windows, Mac ou Linux.

SQLServer et Oracle sont des bases de données capables d'entreprise avec des histoires spectaculaires de développeurs, d'opérations et de support informatique. Les deux sont capables de gérer n'importe quel ensemble de données que vous souhaitez y jeter lorsqu'il est configuré et dimensionné correctement et les deux sont capables de s'arrêter de façon criante lorsqu'ils sont mal configurés et dimensionnés.

Quant à la "facilité d'utilisation", comme je l'ai dit, je suis un gars SQLServer et je trouve SQLServer vraiment facile à utiliser (admin). Bien sûr, je trouverais probablement Oracle difficile car je pense à la manière de SQLServer. De même, je suis sûr que les administrateurs/développeurs Oracle trouvent Oracle facile à utiliser car ils pensent qu'Oracle et SQLServer leur sont étranges.

Je pense que la seule vraie différence entre alors est qu'Oracle est multiplateforme alors que SQLServer ne l'est évidemment pas. Cependant, je ne vois pas cela comme un gros problème car je ne cherche pas à remplacer Windows par Linux.

12
Walden Leverich

J'ai travaillé avec SQL Server et Oracle sur une variété de projets. Mes pensées:

  • SQL Server fonctionne mieux avec .NET
  • Généralement, SQL Server est plus facile à installer et à utiliser. En tant que développeur, j'ai rarement eu besoin d'un DBA pour SQL Server, mais semble toujours rencontrer quelque chose avec Oracle que j'ai besoin d'un DBA pour faire.
  • J'ai beaucoup préféré PL/SQL (Oracle) à T-SQL (SQL Server) pour l'écriture de procédures stockées
  • Oracle semble avoir des exigences matérielles plus importantes
  • Les outils d'administration par défaut pour SQL Server sont plus faciles à utiliser que ceux inclus avec Oracle
  • Les magasins de développement mélangent rarement les deux
9
Paul Lefebvre

Comme l'a mentionné cletus, Oracle a une structure de verrouillage fondamentalement différente de SQL Server: "les écrivains ne bloquent pas les lecteurs et les lecteurs ne bloquent pas les écrivains" comme Tom Kyte ( son site est une ressource gratuite fantastique ) est aime dire. Quelque chose de similaire a été intégré à SQL Server 2005, mais cela a été fait de telle sorte que le versionnement des lignes a été implémenté dans tempdb, ce qui ne semble pas particulièrement évolutif. Et il est désactivé par défaut, donc les gens de Microsoft ne semblent pas particulièrement convaincus par cela.

Oracle a également une structure de mise en cache très différente pour les requêtes, de sorte que l'utilisation de variables liées ou d'espaces réservés peut faire une énorme différence: l'analyse "dure" (c'est-à-dire la base de données vérifiant la syntaxe SQL comme si c'était la première fois qu'elle la voyait) ) peut être réduit au minimum, ce qui signifie que seule l'analyse "douce" (remplissant les variables) prend du temps. À partir de 10g, il existe également la possibilité de "jeter un coup d'œil" pour que vous puissiez utiliser des variables de liaison sans être à la merci de données asymétriques.

De plus, il y a des choses comme une capacité de recherche en texte intégral vraiment efficace et rationalisée et le versionnage au niveau des lignes.

6
davek

Les dernières versions de SQL Server et d'Oracle sont toutes deux prêtes pour l'entreprise et sont largement similaires dans ce qu'elles peuvent faire.

Ils ne fonctionnent évidemment pas de la même manière, mais dans l'ensemble, ce que vous pouvez réaliser dans les deux cas est à peu près équivalent en termes de performances et de fonctionnalités.

Si vous voulez beaucoup de références aux articles, faites une recherche sur google: SQL vrs Oracle

Cela dit, je suis sûr qu'il existe des différences dans les accords de licence et de support.

Pour moi personnellement, nous avons Oracle et SQL Server, où j'ai travaillé dans le passé, et en comparant les deux, je ne vois rien dans Oracle que je ne pouvais pas faire dans SQL Server (L'un de mes rôles était SQL Server DBA.).
Je suis sûr que le DBA Oracle ressentait la même chose. Nous avions 10 serveurs et bases de données SQL Server, et les bases de données allaient de minuscules à des centaines de Go. Oracle avait plusieurs serveurs et bases de données et ils étaient également volumineux.

Dans mon esprit, cela se résume à un problème de gestion/coût, plutôt qu'à un problème technique/fonctionnel, autrefois, avec l'addendum selon lequel certaines applications sont plus adaptées à une base de données qu'à une autre.

Ma meilleure supposition sur la signification de i et g (sans les chercher).
Ce serait, i est prêt pour Internet, g est intégré au réseau.

Voici quelques informations sur SQL Server 2010: Microsoft présente la feuille de route SQL Server

Voici la comparaison de Microsoft avec Oracle: Plus de performances | Plus évolutif | Plus de valeur

Voici la comparaison d'Oracle avec Microsoft: Oracle (r) Database 10g Release 2 surpasse Microsoft SQL Server 2005 en comparaison directe

5
Bravax

Je crois qu'il existe une longue liste de fonctionnalités qu'Oracle n'a pas SQL Server. Cela ne signifie pas que vous ne pouvez pas accomplir la même tâche dans MSSS, non, mais ces fonctionnalités signifient qu'Oracle peut être plus rapide pour la même chose

Clusters de tables.

Nous pouvons stocker des données de plusieurs tables sur le même bloc/page. Prenons par exemple les tables système qui contiennent des tables, des colonnes, des index et des contraintes. Si vous n'avez pas de grappes de tables, pour extraire une table, toutes ses colonnes, index et contraintes, vous interrogeriez l'index de nom de la table parent, puis iriez à la table parent, liriez la page/bloc avec cette ligne. Ensuite, récupérez le PK, prenez cette valeur dans l'index sur le FK sur la table des colonnes, récupérez le rowid, allez dans les blocs/pages avec ces lignes, répétez pour les deux autres tables. Wheh ... ça fait beaucoup de travail.

Dans Oracle, vous pouvez spécifier que ces quatre tables vivront sur le même cluster de tables, toutes basées sur Table_PK. Ainsi, la lecture ressemblerait. Vérifiez l'index du cluster pour l'emplacement de cette table et récupérez les données des 4 tables avec un ou plusieurs blocs. Voila.

Dans les deux systèmes, il s'agit de 4 tables, cela ressemblerait exactement de la même manière à une application, mais si la réduction du temps de lecture était cruciale Oracle pourrait le faire plus rapidement.

5
Mark Brady

L'avantage d'Oracle est l'aspect du réglage, dans Oracle, vous pouvez à peu près tout changer ... Je ne sais pas si vous obtenez ce niveau de personnalisation dans SQL Server.

Du côté des outils, SQL Server brille, c'est très facile à utiliser (a des limites mais reste très facile).

Intégration ... eh bien cela dépend, si vous utilisez .NET puis SQL Server (même si vous pouvez aussi utiliser Oracle avec lui) si vous utilisez Java puis Oracle (vous pouvez également se connecter à SQL Server à l'aide de Java).

Si vous me demandez lequel choisir, je dirai AUCUN!, Car vous obtenez à peu près la même qualité et la technologie avancée avec des serveurs de base de données gratuits comme MySQL ou PostgreSQL (et puisque j'utilise Python/Django et .NET, ils s'intègrent assez bien ).

Lequel devriez-vous choisir? Je ne sais pas, essayez les deux !, ça ne vous prendra pas plus d'une journée pour installer et jouer avec eux :). Les deux ont des avantages et les deux sont cool, nous avons atteint le point que peu importe le SGBD que vous choisissez (les 4 grands, MySQL, PgSQL, MSSQL ou Oracle).

4
igorgue

En tant qu'utilisateur final (non informatique), j'ai une propension (et un biais) envers Oracle. Je travaille chez Oracle depuis trois ans et je suis maintenant plongé dans le monde du MSSS. Personnellement, je trouve l'environnement SQL Server moins intuitif et très "buggé". Je n'écris pas de code, mais je dois interroger de grands ensembles de données et le trouver (OSD) plus évolutif.

0
Tim