Wenn ein unerfahrener Leser zahlreiche Artikel über die erfolgreiche Migration von Oracle zu PostgreSQL im Hub liest, kann er den Eindruck gewinnen, dass PostgreSQL nicht schlechter oder sogar besser als Oracle ist. Und die Wahl liegt auf der Hand. Und die Hunderttausenden von Unternehmen, die am Ende Milliarden von Dollar an Oracle zahlen, verschwenden nur ihr Geld. Aber ich werde versuchen, Sie zu beruhigen, wo, wo und in großen Unternehmen wissen sie, wie man Geld zählt. Und ihre Entscheidungen sind keineswegs falsch.
Der Zweck des Artikels ist es, ein Zweifel in der Seele eines Lesers zu erzeugen, der versucht, eine Wahl zwischen relationalen Datenbanken zu treffen, die im versionierten Modus arbeiten.
Warum genau versionierter Modus? Hier ist die Auswahl nicht groß, aber in Blockern gibt es würdige Konkurrenten und die Auswahl ist noch schwieriger. (Was kostet die kostenlose Version von DB2 für kleine Datenbanken?)
Ich bin kein Experte für die Oracle-Datenbank, obwohl ich seit vielen Jahren mit dieser Datenbank arbeite und nicht nur damit. Ich kann nur die Vorteile nutzen und eine optimale Leistung erzielen. Außerdem bin ich kein PostgreSQL-Experte (ich habe es nie in der Produktion verwendet).
Artikel über erfolgreiche Migration lesen - Ich verstehe, dass diese Unternehmen nicht einmal Oracle benötigten oder die Datenbank ursprünglich falsch ausgewählt wurde. Sie nutzten nur einen kleinen Teil der Funktionen dieser Datenbank. Nur deshalb konnten sie eine Entscheidung über die Migration treffen und diese umsetzen. Wenn Sie die volle Leistung dieser Datenbank nutzen, werden Sie einfach nie den Wunsch haben, zu migrieren, da dies dem Schreiben Ihrer Anwendung von Grund auf ähnelt.
Lassen Sie uns abschließend über die Leistungsvorteile sprechen, die Oracle bietet. Anhand dieser Informationen finden Sie die Antwort für sich.
- Partition (8i) . Partition - Ermöglicht das Wachstum des Datenvolumens, ohne dass dies Auswirkungen auf die Gesamtleistung hat. Ein schöner und wichtiger Bonus ist die Aufteilung von Indizes. PostgreSQL-Partitionen werden nur in Version 10 angezeigt. Zuvor war Vererbung (INHERITS) ein schmutziger Hack. Die Partitionierungsfunktionen in Oracle nehmen mit jeder Version zu.
- Zusammenführen (8i) . Ja, ja, dieselbe Zusammenführung, die seit vielen Jahren (2008) in MSSQL vorhanden ist und in PostgreSQL 11 nicht einmal vorhanden sein wird. Sie führt zu einer zehnfachen Leistungssteigerung im Vergleich zu einzelnen Vorgängen. Ja, ich weiß, dass PostgreSQL Unterabfragen unterstützt und Sie alles durch Einfügen auswählen und das knifflige Update implementieren können. Das ist aber alles andere als dasselbe.
- RESULT_CACHE (Auswahl) (11g). Bei Oracle erschien diese Technologie vor relativ kurzer Zeit. Wenn Sie diese Technologie mit Bedacht einsetzen, können Sie einige Dinge zehn- oder hunderte Male verbessern. Die Hauptsache ist zu lernen, wie man es intelligent benutzt.
- Option INMEMORY ( 12 ) In PostgreSQL gibt es kein Analogon. Echtes Wachstum bei einigen Anfragen hunderte Male.
- Optimierer + Abfrageoptimierung . Beginnend mit 11g wurde es in EM fast zu einem Klick weiter-> weiter. PostgreSQL ist damit komplizierter, und das Fehlen eines Analogons von EM als Ganzes ist ziemlich unangenehm.
PL / SQL. Ja, ich kenne die Sprachenvielfalt in PostgreSQL. Oracle verbessert die Sprache jedoch ständig, wobei der Schwerpunkt auf der Leistung liegt.
- Zusammenstellung . Der Bycode tritt während des Speicherns auf (in PostgreSQL während des ersten Aufrufs im Sitzungs- + Abfrageplan während der ersten Ausführung). Ab 10g kann Oracle in nativen Code kompilieren.
- Native Integer - beschleunigt die Arbeit mit Zahlen erheblich. PostgreSQL kann andere besser geeignete Sprachen (Übersetzer) verwenden. In Oracle kann dies auch mit Java und C gelöst werden.
- Wechseln des "Kontexts" von PL / SQL. Oracle ist sehr darum bemüht, diese Metrik zu optimieren und von Version zu Version zu verbessern. Um Verzögerungen zu reduzieren Umschalten des „Kontexts“ bieten BULK COLLECT und FORALL und mehr.
Angesichts des Zustands der PostgreSQL-Sprachen ist diese Aufgabe zu diesem Zeitpunkt überhaupt nicht wichtig. - Ergebnis-Cache (Funktion) (11g) Bei ordnungsgemäßer Verwendung kann die Reaktionsfähigkeit der gesamten Anwendung um ein Vielfaches gesteigert werden, ohne dass viel Aufwand erforderlich ist. Bei einigen Anfragen Dutzende Male.
Nun, wie sie sagen, steckt der Teufel im Detail, und Oracle hat diese Details viel besser herausgearbeitet. Oracle überrascht immer wieder mit jeder Version. Und es spielt keine Rolle, in welche Datenbank Sie nach Oracle übertragen - Sie werden immer das Gefühl haben: Verdammt, in Oracle ist es schon lange her, oder in Oracle ist es besser gemacht.
Ich bin mir fast sicher, dass Sie mit derselben Hardware und unter Verwendung aller Funktionen von PostgreSQL und Oracle eine bessere Leistung mit weniger Aufwand für ORACLE erzielen können.
PS Betrachten Sie diesen Artikel in keinem Fall als PR-Datenbank von Oracle.
Ich verstehe gut, dass es in PostgreSQL immer Dinge gibt, die besser gemacht werden. Aber im Allgemeinen Oracle in diesem Segment der Datenbank Nummer 1.
Ich habe speziell nicht auf Dinge eingegangen, die mit der Verwaltung zu tun haben. Stellen Sie sich vor, Sie können die Datumsdatei von Festplatte zu Festplatte übertragen oder den "defekten Block" im Online-Status wiederherstellen. Sie können auf neue Server umsteigen, ohne die Datenbank anzuhalten. Und das sind keine neuen Funktionen. Bei Oracle ist dort alles viel besser und ich bin kein DB-Administrator.
Zuvor wurde der Administrator bis Version 10 fast immer benötigt. Jetzt ist der Bedarf an Administratoren dramatisch gesunken, obwohl die Qualifikationen des Administrators jetzt höher benötigt werden. Vielleicht gehört in Version 15 das Konzept der "admin" -DB der Vergangenheit an :)
Ja, und Pl / SQL ist nachdenklicher als andere, obwohl dies natürlich nicht C # ist :). Das ist zwar rein individuell.
Nun, ich habe keine Dinge angesprochen, die bei der Geschwindigkeit schlecht helfen.
PSS Und ja, ich erinnere mich kaum an alle Möglichkeiten. Nur diejenigen, die sich auf der „Oberfläche“ befanden. Fügen Sie also die Kommentare hinzu. Ich werde in upd aufnehmen.