40 Stimmen

SQL Server VS Oracle

Ich lerne gerade SQL Server, weiß aber nicht viel über Oracle. Kann mir jemand einen fairen Vergleich der beiden Systeme geben? Ich habe einen Vergleich zwischen SQL Server 2000 und Oracle 9i gelesen, aber der ist schon ein wenig veraltet. Hat SQL Server 2008 Oracle 11g/i schon eingeholt?

64voto

gjvdkamp Punkte 9133

Nur meine 0,02 $ nach der Arbeit mit SqlServer für Jahre und Oracle für 4 Monate jetzt.

SqlServer ist viel einfacher zu bedienen, so dass Sie sich auf das konzentrieren können, was die Datenbank tun soll (einige geschäftliche Probleme lösen), anstatt die ganze Zeit mit dem Server zu ringen.

Da Sie bei Oracle so viele Einstellungen vornehmen müssen, gibt es viele Möglichkeiten, sie falsch zu machen. Dies führt zu endlosen Diskussionen über die Partitionierung, die Art des zu verwendenden Index usw. usw. Während dieser Diskussionen denkt niemand über die geschäftlichen Probleme nach.

Eine Analogie: Ich hatte einmal eine Olympus-Kamera mit einem guten Objektiv und einigen einfachen Einstellungen. Ich habe damit schöne Bilder gemacht, also habe ich auf eine DSLR mit allen möglichen Knöpfen und Einstellrädern aufgerüstet. Damit waren meine Bilder nicht halb so gut, weil ich mich auf die Kamera statt auf das Motiv konzentriert habe.

Das ist für mich der Unterschied zwischen Sql und Oracle. Mit SQL ist es einfacher zu arbeiten und deshalb werden mehr Dinge erledigt. Ideen werden so viel schneller vom Whiteboard in funktionierenden Code umgesetzt. Nur wenn es um sehr große Datenbanken geht, könnte Oracle die Nase vorn haben, aber selbst da bin ich mir nicht sicher. Ich glaube nicht, dass es etwas gibt, das Oracle bewältigen kann, was SQL nicht kann.

Bearbeiten: Außerdem ist Oracle sehr schlecht bei datenbankinternen Analysen großer Datenmengen aufgrund von Kontextwechsel zu PL/SQL . Wenn Sie also einige komplexe Funktionen auf Ihre Daten anwenden wollen, sollten Sie Oracle nicht verwenden. MS SQL hingegen glänzt in diesem Bereich, weil es nicht unter diesem Problem leidet und außerdem über eine .Net-Integration verfügt.

2 Stimmen

Ich befinde mich in der gleichen Situation. Ich habe viele Jahre lang SQL Server verwendet. Jetzt wechsle ich seit ein paar Monaten zu Oracle. Wenn ich versuche, etwas zu erledigen, ist SQL Server sehr geradlinig.

4 Stimmen

SQL? Oracle ist auch SQL (in der Tat auch ein SQL-basierter Server)!!! Vermutlich meinen Sie MS SQL Server, nicht nur "SQL" :)

4 Stimmen

Definitiv ein heiliger Krieg hier... aber SQL Server ist objektiv besser ;)

35voto

erikkallen Punkte 32657

Das würde ich sagen:

  • Oracle hat eine viel bessere prozedurale Sprache. T-SQL fühlt sich im Vergleich zu PL/SQL nur halbfertig an.
  • SQL Server hat einen viel besseren Optimierer. Bei Oracle musste ich bei jeder Abfrage einen Hinweis geben, um sicherzustellen, dass sie nicht ewig dauert, während SQL Server einfach funktioniert. Möglicherweise war der Server aber auch schlecht konfiguriert, was uns zum nächsten Punkt führt
  • SQL Server ist viel einfacher zu handhaben. Für die Verwaltung von Oracle braucht man spezielle DBAs, aber SQL Server kann so ziemlich jeder Idiot zum Laufen bringen.
  • Oracle hat ein besseres, berechenbareres und besser dokumentiertes Gleichzeitigkeitsmodell.
  • Die Dokumentation von Oracle ist in den meisten Punkten überlegen.
  • SQL Server lässt sich besser in .NET integrieren (wie das Teufelchen Linq2SQL).
  • Wenn Sie Oracle verwenden, müssen Sie auch TOAD kaufen, aber das mitgelieferte Manegement Studio ist für SQL Server ausreichend.
  • Oracle verfügt über weitere coole, aber kaum notwendige Funktionen wie die erweiterbare Indizierung.

Wenn ich die Wahl hätte, würde ich mich wegen des besseren Optimierers für den SQL-Server entscheiden. Allerdings fühle ich mich nicht wirklich sicher, wenn mehrere Personen dieselben Zeilen in SQL Server verwenden.

13 Stimmen

Das ist ziemlich fair, aber wenn Sie jede Abfrage in Oracle mit einem Hinweis versehen müssen, ist der Entwurf fehlerhaft, nicht der Optimierer. Außerdem war TOAD nie eine Voraussetzung und ist mit der Bündelung von SQLDeveloper noch weniger von Vorteil.

1 Stimmen

@Leigh: Ich bin mir ziemlich sicher, dass mein Entwurf nicht fehlerhaft war. Die Serverkonfiguration könnte es aber gewesen sein. Als ich noch mit Oracle gearbeitet habe, war es natürlich möglich, in SQL*Plus zu entwickeln, aber das ist eine so schlechte Option, dass ich sie nicht für sinnvoll halte.

0 Stimmen

Oracle SQL Developer hat seit seiner ersten Veröffentlichung einen weiten Weg zurückgelegt und ist meiner Meinung nach jetzt ein brauchbarer Ersatz für TOAD - ich sollte auch erwähnen, dass SQL Server Management Studio ein !@#$pile ist.

24voto

Eric Petroelje Punkte 58501

Ich weiß nicht, ob das fair ist, aber das ist meine Erfahrung, nachdem ich mit beiden gearbeitet habe:

  1. Oracle scheint etwas "leistungsfähiger" zu sein und bietet einige raffinierte Funktionen, mit denen SQL Server noch nicht ganz mithalten kann.

  2. SQL Server ist viel einfacher zu handhaben und bietet eine viel bessere Integration mit Microsoft-Produkten (wenn Sie .NET-Entwicklung betreiben).

1 Stimmen

Diese Aussage scheint für alle Versionen der Produkte zu ähnlichem Zeitpunkt zu gelten: Oracle scheint immer die Nase vorn zu haben, was die Leistung angeht, aber SQL scheint immer die Nase vorn zu haben, was die Verwaltung/Integration angeht.

0 Stimmen

Ich stimme der Integration zu, aber nicht der Verwaltung. Management Studio (zumindest ab 2005) hatte einige schwerwiegende, seit langem bestehende Fehler, die von MS grundsätzlich als "nicht zu beheben" deklariert wurden.

2 Stimmen

@cletus - stimmt, aber was ist die Alternative bei Oracle? Kommandozeile? TOAD? Toad ist nicht schlecht, aber es hat auch seine Tücken.

22voto

cletus Punkte 596503

Letztendlich gibt es jetzt keinen großen Unterschied mehr. Es gibt nur sehr wenig, was der eine kann, was der andere nicht kann, aber die Standardkonfigurationen unterscheiden sich etwas.

Der offensichtlichste Unterschied besteht darin, dass Oracle SEQUENCEs und SQL Server automatisch inkrementierende Spalten verwendet. Beide haben ihre Vor- und Nachteile. Manche bevorzugen die eine gegenüber der anderen.

Meiner Erfahrung nach ist die Durchführung von Top-N-Abfragen in SQL Server etwas einfacher als in Oracle.

Oracle verwendet von Haus aus MVCC (unbestätigte Daten sind für Lesevorgänge durch andere Transaktionen nicht blockierbar - die Datenbank behält eine konsistente Ansicht bei). Bei SQL Server habe ich erst vor kurzem entdeckt, dass es das auch gibt, aber es ist nicht die Standardoption und heißt etwas ganz anderes. Transaktionsisolationsebene oder so ähnlich.

PL/SQL und T-SQL unterscheiden sich in der Syntax in einigen Bereichen, aber die Konzepte sind größtenteils die gleichen.

Ich persönlich fand das SQL Server Management Studio zwar OK, aber in einigen Bereichen grauenhaft, z.B. funktionierte der Datenimport/-export nicht mit automatisch inkrementierten Primärschlüsseln. Dies war ein bekannter Fehler, der schon seit Jahren bei SQL Server 2005 auftrat. Ich weiß nicht, ob er in 2008 behoben wurde oder nicht. Mit PL/SQL Developer (wird nicht als Teil von Oracle ausgeliefert; es ist ein separates kommerzielles Produkt) waren Importe und Exporte ein Kinderspiel.

Oracle hat ein lästiges Limit für VARCHAR(2)-Spalten: Sie sind auf 4k Länge begrenzt. In SQL Server sind sie viel länger (64k?).

Ich fand das Sicherheitsmodell von SQL Server einfach bizarr. TCP war standardmäßig deaktiviert (nur Windows-Authentifizierung), und dann musste man eine Anmeldung und einen Benutzer einrichten? Das habe ich nie ganz verstanden. Es schien einfach übermäßig kompliziert zu sein, während es bei Oracle einfach ist:

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

Erledigt (obwohl die Gewährung einiger anderer Privilegien/Rollen wie RESOURCE ziemlich üblich ist).

Ich habe das Sichern/Wiederherstellen aus dem Management-Studio nie ganz herausgefunden. Die Wiederherstellung schlug fehl, weil jemand mit der Datenbank verbunden war, aber dieser jemand war ich, der versuchte, die Wiederherstellung auszuführen.

Und bevor sich jemand über mich wegen der oben genannten Punkte aufregt, ist mir völlig klar, dass viele von ihnen auf meinen Mangel an SQL Server-Erfahrung zurückzuführen sind, aber ehrlich gesagt wird immer noch ein gewisses Maß an Konsistenz (mit der Abstraktion) und Übertragbarkeit der Konzepte erwartet.

1 Stimmen

Darf ich fragen, ob Sie immer noch die gleiche Meinung zu SQL Server 2016 vs. Oracle 12 haben?

4 Stimmen

Ähm, du vergisst da etwas tnsnames , tnslistner und den ganzen Mist, der mit der Einrichtung eines Orakels einhergeht. Ich könnte 10 SQL-Server in der Hälfte der Zeit konfigurieren, die ich brauche, um eine Oracle-Installation durchzuführen.

17voto

jpmc26 Punkte 25728

Ich bin ein Software-Entwickler. In erster Linie schreibe ich Software auf der Grundlage von Datenbanken (oder helfe meinem Team dabei).

Folgendes kann ich über Oracle sagen: Jedes Mal, wenn ich etwas tun möchte, sind meine früheren Erfahrungen damit nicht hilfreich, um zu verstehen, wie ich meine aktuelle Aufgabe erledigen soll. Ich habe viel Zeit damit verbracht, nach einer sinnvollen Erklärung für eine kryptische Fehlermeldung zu suchen, nur um ein paar Beiträge zu finden, in denen dem Benutzer empfohlen wird, sich an den Oracle-Support zu wenden. Ich habe gerade entdeckt, dass das Datenpumpen-Importtool Fehler (die ziemlich kryptisch waren) ausgibt, wenn man eine NOT NULL Einschränkung für eine räumliche Spalte in Oracle 10g. Selbst nach dem Entfernen der Einschränkung habe ich ein Problem, bei dem der Import hängen bleibt und nichts tut. Apropos Datenpumpe: Sie funktioniert nur lokal. Die Import/Export-Tools, die von entfernten Rechnern aus funktionieren, sind veraltet. Wenn Sie einen Fehler in Ihrer Prozedur haben, wird Ihnen mitgeteilt, dass die Kompilierung fehlgeschlagen ist, aber das Prozedurobjekt wird trotzdem in einem unbrauchbaren Zustand erstellt. Dann müssen Sie einen Befehl ausführen, um die Fehler zu finden. Das Benutzer- und Berechtigungssystem ist mangelhaft. Ein Benutzer ist in Oracle ein Schema, aber trotz der großen Anzahl von Berechtigungen gibt es keine Berechtigung, die es einem Benutzer erlaubt, auf alle Objekte eines Schemas zuzugreifen, und wenn man einem Benutzer erlaubt, eine Sitzung zu beenden, muss man ihm die ALTER DATABASE Berechtigung (die dem Benutzer wahrscheinlich weit mehr Macht gibt, als Sie wollen). Für Raumfahrt-Junkies: Es kann die WKTs, die es für SRID 3857 generiert, nicht parsen (es spuckt Zahlen der Form 0.00000e6 aus, wenn die Koordinaten groß genug sind und kann diese numerische Syntax nicht parsen). Ja, viele dieser Beispiele sind spezifisch, aber solche Probleme, bei denen ich nicht einfach das tun kann, was ich will, sind für mich alltäglich, und bei einer einzigen Aufgabe treten mehrere Probleme auf.

Ich habe nur begrenzte Erfahrungen mit SQL Server, aber was ich bisher gemacht habe, war nicht annähernd so schwierig für mich. Ich konnte Dinge viel leichter herausfinden, und ich kann mich nicht daran erinnern, Fehlermeldungen gesehen zu haben, die mir nicht helfen, meine Probleme zu verstehen. Meine Kollegen, die sich intensiver mit SQL Server beschäftigt haben, berichten von ähnlichen Erfahrungen.

Vielleicht liegt es nur an mir, aber die Arbeit mit Oracle scheint ständig ein mühsamer, langwieriger Prozess zu sein, bei dem ich seltsame Fehler finden und versuchen muss, die Tatsache zu umgehen, dass Funktionen, die ich brauche, fehlen und ich sie selbst implementieren muss (z. B. das automatische Inkrementieren von Schlüsseln). Unterm Strich bin ich der Meinung, dass Oracle vielleicht besser funktionieren kann, aber nur, wenn man die Zeit und das Geld hat, Oracle zum Laufen zu bringen und dann herauszufinden, wie man es optimieren kann, und das Geld hat, um seine Entwickler dazu zu bringen, es auch zu lernen. Oracle ist einfach nur schwer zu erlernen und zu benutzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X