Der Titel ist kein Clickbait oder Übertreibung. Ich beabsichtige zu beweisen, dass PostgreSQL sowohl aufgrund des Designs als auch der Implementierung objektiv und messbar eine bessere Datenbank ist als alles, was derzeit verfügbar ist, mit oder ohne finanzielle Erwägungen.
Wie um alles in der Welt kann ich eine so erhabene Aussage behaupten und rechtfertigen? Lies weiter, sanfter Nerd. Ich verspreche, dass Ihre Zeit nicht verschwendet wird.
Transparente Sicherheit
PostgreSQL hat eine Sicherheits-Mailingliste. Das PostgreSQL-Projekt lernt zur gleichen Zeit wie alle anderen etwas über die Angriffsvektoren. Nichts wird versteckt, und alles, was gefunden wird, wird mit einer Geschwindigkeit bearbeitet, die den kommerziellen Anbietern den Kopf verdreht. Lassen Sie sich nicht von kürzeren Fehlerlisten täuschen, die von demselben Anbieter veröffentlicht werden, der die zu prüfende Software bereitstellt.
Das bedeutet, dass alle bekannten Angriffsvektoren behandelt werden, sobald sie veröffentlicht werden. Diese Art von Sicherheitsreaktionsfähigkeit ist auf dem kommerziellen Markt nicht einmal denkbar. Für kommerzielle Anbieter ist die Geheimhaltung, bis das Problem behoben werden kann, für die Behebung von entscheidender Bedeutung. PostgreSQL bekommt keine solche Erleichterung, und das ist fantastisch für Sie.
Multi-Version Concurrency Control ist gut für Sie
PostgreSQL wählt eine Methode der Parallelitätssteuerung, die am besten für hohe INSERT- und SELECT-Workloads geeignet ist.
Es ist sehr einfach, für PostgreSQL zu entwerfen, wobei die Einschränkungen für den Tracking-Overhead für
berücksichtigt werden müssenAKTUALISIEREN und LÖSCHEN. Wenn Sie Ihre Daten respektieren, sollten Sie vor allem die Datensicherheit lieben lernen, die Ihnen PostgreSQL bietet .
DDL nimmt an Transaktionen teil, die PostgreSQL verwenden. Migrationen funktionieren ganz oder gar nicht (die schlimmste Art, nicht zu funktionieren, ist fast zu funktionieren). Prüfkabelbäume sind kinderleicht zu bauen. Müssen Sie das Testgeschirr zurücksetzen? Einfach ROLLBACK.
PostgreSQL unterstützt standardkonforme Formen der Transaktionsisolation, einschließlich Serialisierung, Read Committed und Repeatable Read. Diese Methoden bieten vollständige ACID-Konformität.
PostgreSQL macht alles
Sie möchten also NoSQL, Riak, REACT, Redis, Mongo usw.? PostgreSQL macht das alles. Zugegebenermaßen nicht mit allem Schnickschnack aller Originalprodukte. Beispielsweise erstellt PostgreSQL für keine dieser Shards neue Shards für Sie. Das ist immer noch ein manueller Prozess. Aber andererseits gibt es immer pg_partman. . .
Sie möchten einen Spaltendatenspeicher? Wie wäre es mit hstore? Sie möchten Ihre Mitarbeiter nicht umschulen? Schließen Sie die Sprache Ihrer Wahl an und fahren Sie weiter. Sie möchten eine teilweise Replikation? Logische Streaming-Replikation ist für Sie.
Es fällt mir schwer, an eine Funktion zu denken, die ich haben möchte und die PostgreSQL nicht hat oder für die es keine bekannte Erweiterung gibt.
Sie möchten Daten aus anderen Systemen extrahieren? PostgreSQL hat die lebendigste Sammlung von Föderationsobjekten aller Datenbanken. Sie werden Foreign Data Wrapper genannt, und Sie können PostgreSQL mit Klebeband und Kabelbindern an einen Alligator anschließen. Behandeln Sie alles so, als wären es Ihre Daten.
Hängen Sie es an eine Karte
Die PostGIS-Community ist möglicherweise größer als die PostgreSQL-Community selbst. Die Mapping-Fähigkeiten von PostgreSQL machen es selbst im Vergleich zu sehr teuren Alternativen zu einer Klasse für sich.
Das PostGIS-Projekt wählte PostgreSQL als Plattform aufgrund der einfachen Erweiterbarkeit und der umfangreichen Möglichkeiten zur Datenanreicherung. Diese Fähigkeiten werden direkt für jedes andere Projekt zur Verfügung gestellt, um davon zu profitieren. Sie werden auch von keinem anderen kommerziellen oder Open-Source-Anbieter beantwortet.
Letztendlich können Sie es an alles anschließen.
PostgreSQL wächst und ist führend in Open Source
Das PostgreSQL-Projekt ist eine der bekanntesten Organisationen im Bereich Open-Source-Software. Mit einer riesigen Community und einem astronomischen Wachstum werden alle Mängel, die es jetzt hat, wohl in einem Zeitrahmen beseitigt, von dem andere Anbieter nur träumen können.
Zusätzliche Funktionen in Unternehmensqualität werden buchstäblich jeden Tag angekündigt, und die Mitarbeiter, die diese Funktionen pflegen, werden selbst aus einem Pool von Genies ausgewählt, die jedes Unternehmen einstellen möchte, und es gibt einfach nicht genug, um herumzugehen.
PostgreSQL erstellt Lösungen, die für immer stabil sind
PostgreSQL verfügt über eine im Kern integrierte logische Replikation. Dies ermöglicht Cross-Version-Migrationen. Lesen Sie das noch einmal. Sie sind nicht an eine bestimmte Hardware- oder Softwareversion gebunden. Die Lösung kann unbegrenzt aktualisiert werden.
Außerdem wird PostgreSQL auf vielen Plattformen unterstützt, einschließlich der superstabilen Versionen von Linux. Benötigen Sie eine Lösung, die den typischen ROI von 3 bis 5 Jahren überdauert? PostgreSQL hält ewig, auch wenn Sie die Hardware nie aktualisieren. Und die Gebühren dafür sind einfach zu berechnen. $0.
Deklarativ ist besser als Imperativ
Datenbanksprachen sind im Allgemeinen deklarativ. Das heißt, Sie schreiben eine Abfrage in der integrierten Sprache Ihrer Wahl und beschreiben die Ergebnisse, die Sie sehen möchten. Die Datenbank versucht, Ihre Absichten zu entschlüsseln und die entsprechenden Ergebnisse bereitzustellen. Dies ist die Grundlage aller deklarativen Programmiermodelle. In PostgreSQL läuft dies auf eine Zuordnung von Funktionen zu Schlüsselwörtern in der SQL-Sprache hinaus, manchmal mit mehreren algorithmischen Auswahlmöglichkeiten für die genaue Implementierung jeder Deklaration.
In der uralten Diskussion über die imperitiven vs. deklarativen5 Programmiermodelle kommt mir in den Sinn, dass die deklarative Programmierung nur eine imperative Programmierung in einer dünnen Verkleidung ist. Jedes deklarative Token in einer Datenbankabfragesprache bildet letztendlich einen oder mehrere Algorithmen ab, die die Deklaration in zwingenden Begriffen anwenden. Somit liegt die von Henrietta definierte Impedanzfehlanpassung letztendlich im Kopf des Entwicklers. Das heißt, wenn der Entwickler genauso denken würde wie der Datenbankfunktionsprogrammierer, dann gäbe es keine Diskrepanz.
Wie könnte also ein deklaratives Modell letztendlich besser sein als ein imperitives Modell, wenn man bedenkt, dass das eine nur ein aufrufendes Merkmal des anderen ist? Ich bin froh, dass Sie gefragt haben, denn das bringt mich zu meinem Punkt.
Die PostgreSQL-Entwickler sind klüger als Sie. Ich meine das nicht scherzhaft oder schüchtern. Buchstäblich Tausende von Mitwirkenden haben Millionen von Beiträgen zum PostgreSQL-Projekt geleistet, viele davon als Verbesserungen der Beiträge anderer. Die Wahrscheinlichkeit, dass das, was Sie sich spontan ausgedacht haben, besser ist als das, was bereits umgesetzt wurde, ist sehr gering. Und selbst wenn Ihre Gedanken besser wären, sollten Sie sie zum Nutzen aller zum PostgreSQL-Projekt beitragen und so die Messlatte für alle anderen höher legen.
Was macht PostgreSQL dann so wunderbar? Weltweites Mindshare ohne Unternehmensüberlegungen. Tausende von Entwicklern arbeiten Hunderttausende von Stunden, um bessere algorithmische Entscheidungen zu treffen. So wird Ihre Software mit jedem Release besser, meistens ohne dass Sie etwas Besonderes tun müssen.
Ist das nicht die Natur von Software im Allgemeinen, sagen Sie? Nun ja. Aber längst nicht in dem Maße, wie es der Fall ist, wenn die ganze Welt an einem Projekt beteiligt ist. PostgreSQL genießt einen sehr prominenten Platz in der Open-Source-Community. Kommerzielle Anbieter werden niemals in der Lage sein, mit der Änderungsrate Schritt zu halten, die ein Open-Source-Projekt auf diesem Niveau bieten kann. Die Migrationen zu Open Source (und insbesondere PostgreSQL) sind hier, um dies zu beweisen.
Die Funktionen rollen weiter. Es gibt nur noch sehr wenige Dinge, auf die kommerzielle Anbieter als deutlichen Vorteil hinweisen können. Dazu gehören SMP-Unterstützung, bidirektionale Replikation und externe Tools. Ratet mal, woran die Community derzeit arbeitet und was sehr wahrscheinlich in den nächsten Jahren veröffentlicht wird?
PostgreSQL beliebig erweitern
PostgreSQL hat eine lebendige Community von Autoren, die Zusatzsoftware schreiben. Dazu gehört das Einbinden einer beliebigen Sprache und deren Verwendung, um PostgreSQL auf jede hilfreiche Weise zu erweitern. Magst du zufällig die Handhabung von Perl-Strings? Ok, dann benutze das. Wie sieht es mit der Unterstützung von Python-Karten aus? Sicher, stecken Sie einfach Python ein und gehen Sie in die Stadt. Möchten Sie Webservices mit einem PostgreSQL-Backend schreiben? Das ist großartig, und PostgreSQL wird dabei helfen. JSON? In Ordnung. XML? Sie wetten. PostgreSQL bietet direkte Unterstützung für all das und unendlich mehr. Wenn Ihnen eine Sprache einfällt, die das gut macht, dann schließen Sie diese an PostgreSQL an und Sie können sie auf der Serverseite haben.
Sie können Ihre eigenen Funktionen, Datentypen, Operatoren, Aggregate, Fensterfunktionen oder so ziemlich alles andere erstellen. Sehen Sie eine Funktion nicht, die Ihnen gefällt? Plagiieren und anpassen aus dem Quellcode. Aufgrund der Lizenz steht Ihnen das frei.
PostgreSQL bietet auch einige Hook-Funktionen, mit denen Sie die Datenbank erweitern können, ohne zu Programmierextremen gehen zu müssen.
Diese Fähigkeit, jedes Feature jeder anderen Sprache zu assimilieren, ist einzigartig bei PostgreSQL. Sie können jede Funktion mit jeder existierenden standardisierten Bibliothek bereitstellen. Sie können die Standards befolgen, mit Änderungen Schritt halten, PostgreSQL aktualisieren, während es aktiv ist, und Sie können dies alles kostenlos tun.
Geh groß und weit!
PostgreSQL verfügt über mehrere Funktionen, um das Beste aus der ihm gegebenen Hardwareplattform herauszuholen. Partitionierung, parallele Ausführung, partielle Indizes, Tablespaces, Caching und parallele, nicht blockierende Wartungsroutinen (fast alles in PostgreSQL sprießt in letzter Zeit das Schlüsselwort CONCURRENTLY).
Wenn Ihnen das nicht ausreicht, wird Ihnen die physische Streaming-Replikation eine Menge Lese-Standby für wenig Geld verschaffen. Sharding, Memcache, Queueing, Load Balancing und Connection Pooling funktionieren alle mit PostgreSQL. Immer noch nicht genug? Wie wäre es mit einer logischen Streaming-Replikation? Sie wollen die Datenbank auf der ganzen Welt geosharden, sagen Sie? Willkommen bei der bidirektionalen Replikation.
Und der Preis liegt immer noch bei 0 $.
All das indizieren
PostgreSQL unterstützt eine so riesige Liste von Indizes, dass es den Verstand verdirbt, herauszufinden, wie man sie alle verwendet. GiST, SP-Gist, KNN Gist, GIN, BRIN und Btree sind alle verfügbar. Und es gibt noch mehr durch das Erweiterungssystem, wie Bloom-Filter und andere.
PostgreSQL kann diese mit funktionsgesteuerten Indizes, Teilindizes, abdeckenden Indizes und Volltextsuche verwenden. Und diese erweiterten Funktionen schließen sich nicht gegenseitig aus. Sie können sie alle gleichzeitig verwenden.
Einrollen, ausrollen
Mehrere der bereits erwähnten Technologien machen PostgreSQL zu einer fantastischen Datenintegrations- und -verteilungsplattform. Mehrere Formen der Replikation, kombiniert mit mehreren Formen der Föderation, bieten sowohl Push- als auch Pull-Technologien für nahezu jede Art von Datensystem.
Diese können in unendlichen Konfigurationen kombiniert werden, um Datenbankspeicherlösungen zu überbrücken. All dies, ohne dass ein ETL/ELT-Verarbeitungspaket erforderlich ist. PostgreSQL tut es einfach. Die schnellste Single-Source-of-Truth-Datenbank der Welt tut dies, indem die Daten überhaupt nicht aus dem Quellsystem verschoben werden. Dadurch sind die Daten immer aktuell und die Antwortzeiten können verwaltet werden.
Wenn Sie die Unzuverlässigkeit des Quellsystems nicht ertragen können oder eine etwas bessere Leistung auf der Abfrageseite wünschen, können Sie die Daten auch weiterhin regelmäßig mit materialisierten Ansichten zwischenspeichern, die aktualisiert werden können, während sie noch abgefragt werden.
Die Lizenz ist weit offen
PostgreSQL hat eine eigene Lizenz, die weitgehend auf der BSD-Lizenz basiert. Dies ermöglicht eine noch größere Nutzungs- und Verbreitungsfreiheit.
Die Lizenz gilt für den gesamten Code des Hauptprojekts, wichtige Beitragserweiterungen, Clientbibliotheken, Verbindungsmanager und die meisten zugehörigen Tools.
Es ist sehr freizügig, in einfachem Englisch geschrieben und nicht käuflich zu erwerben.
Fantastische Dokumentation
Das PostgreSQL-Projekt erfordert, dass jeder Entwickler, der Code einreicht, eine Dokumentation für den Vorschlag bereitstellt. Dieser Vorschlag wird verwendet, um die Dokumentation für das Feature zu erstellen, das in mehreren Formaten zur Verfügung gestellt wird. Diese Dokumentation wird auch bei der Bewertung der Funktion selbst und als Referenz für die Entwicklung zukünftiger Funktionen verwendet.
Alles in allem bedeutet dies, dass PostgreSQL von der Dokumentation lebt. Es gibt viele Entwickler für PostgreSQL, die gelernt haben, in C zu programmieren, wie Datenbanken funktionieren und wie Projekte verwaltet werden, indem sie mit dem PostgreSQL-Projekt arbeiten. Diese Dokumentation ist unübertroffen.
Testgetriebene Entwicklung
PostgreSQL wurde ausgiebig getestet. Nein, das ist nicht stark genug gesagt. PostgreSQL wurde ausführlich getestet. Jeder Fehler wird einem Test unterzogen, um seine Existenz zu verifizieren, und Code wird geschrieben, um den Test zu bestehen. Neue Funktionen werden zuerst durch die Erstellung von Tests (und Dokumentation) geschrieben und dann codiert, bis die Funktion erscheint.
Diese Tests sind zur Regression in die Build-Farm integriert, sodass Fehler in zukünftigen Versionen von PostgreSQL nicht (wieder) auftauchen. Das bedeutet, dass jeder Test (der noch aktuell ist) für jede Version von PostgreSQL für jeden Build-Zyklus ausgeführt wird. Das bedeutet viel Testen und stellt sicher, dass PostgreSQL die stabilste verfügbare Datenbank bleibt.
PostgreSQL wird nur freigegeben, wenn ALLE Regressionstests bestanden wurden. Dies sieht „0 bekannte Fehler“-Releases vor.
Internationalisierung und Lokalisierung
Die Entwickler von PostgreSQL kommen aus der ganzen Welt. Seit der Gründung von PostgreSQL als Projekt für Hochschulabsolventen haben sie in vielen Muttersprachen gearbeitet. Internationalisierung und Lokalisierung wurden als Standardverfahren in PostgreSQL integriert, nicht als Ergänzung, als PostgreSQL begann, einen kommerziellen globalen Markt anzuziehen.
Während PostgreSQL aus Kompatibilitätsgründen einen Teil der Internationalisierung an das Betriebssystem delegiert, ist ein Großteil der Übersetzung in das System eingebettet, was einen nahtlosen Sprachwechsel ermöglicht.
Cloud-Betrieb
PostgreSQL funktioniert in Cloud-Architekturen mit Ansible, Kubernetes und proprietären Tools von mehreren Cloud-Anbietern. Es stehen mehrere native Cloud-Implementierungen zur Auswahl, die zu Ihrer Architektur passen.
Wenn Sie Server wie Rinder und nicht wie Haustiere behandeln möchten, ist PostgreSQL auch in der Cloud für Sie da.
Standardkonformität
PostgreSQL hat sich während der gesamten Lebensdauer des Projekts auf Standards konzentriert. Da PostgreSQL seinen Ursprung in einem Graduiertenprogramm der Universität hatte, wurde es als Referenzimplementierung für viele SQL-Standards verwendet.
PostgreSQL implementiert SQL/Med und ANSI SQL.
Laut der fantastischen Dokumentation „unterstützt PostgreSQL die meisten Hauptfunktionen von SQL:2016. Von 179 obligatorischen Funktionen, die für eine vollständige Core-Konformität erforderlich sind, entspricht PostgreSQL mindestens 160.“ Das ist mehr als bei fast jeder anderen Datenbank-Engine.
Sprachfunktionen
PostgreSQL implementiert allgemeine Tabellenausdrücke (CTE), Sprachkontrollstrukturen (if, for, case usw.), strukturierte Fehlerbehandlung und all die Extras, die Sie von einer ausgereiften prozeduralen Sprache erwarten würden.
Bist du schon überzeugt?
Ich könnte immer noch über die fantastische Gemeinschaft von Benutzergruppen, IRC-Kanälen, Websites mit Lösungen, Blogartikeln und Mentoren sprechen. Ich könnte darüber philosophieren, wie die Datenbank plattform-, architektur- und kulturübergreifend ist. Es gibt stundenlange Präsentationen, Videos und Vorträge.
Oder Sie könnten es einfach herunterladen und sehen, ob es größer ist als Ihre Vorstellungskraft. Ich denke, Sie werden sehr angenehm überrascht sein.