Entgegen der landläufigen Meinung - die Antwort auf alles ist NICHT 42 - es ist PostgreSQL. (Ok. Es könnte auch Postgres sein).
Table Of Contents
Intro
Ich begann PostgreSQL ungefähr 2003 für ein Forschungsprojekt namens ColumbaDB zu nutzen. Columba gibt es nicht mehr, aber PostgreSQL lebt und gedeiht mehr denn je.
2003 war MySQL viel weiter verbreitet als PostgreSQL. MySQL war auch potenziell schneller, da es nicht alle Features des SQL-Standards implementierte. Gleichzeitig fehlten MySQL viele Features, die wir brauchten (Volltextsuche, leistungsfähige Indizes, SQL-Standard-Konformität usw.). PostgreSQL fühlte sich im Vergleich zu MySQL eher wie eine “echte” Datenbank an - wie eine kleine Version von Oracle - aber im Open-Source-Gewand.
Während dieses Forschungsprojekts habe ich viel über Datenbanken, Indizes und die Leistungsfähigkeit von PostgreSQL gelernt. Ein wichtiger Anwendungsfall war die Volltextsuche. Wir hätten MySQL in Verbindung mit einem anderen System wie Lucene / Solr verwenden können, um unsere Datenbank durchsuchbar zu machen. Aber das hätte bedeutet, zwei solche Systeme zu betreiben und zu warten. Kompliziert.
PostgreSQL ermöglichte es uns, ein Volltext-Such-Plugin zu verwenden, um alles in einem System zu erledigen. Keine Notwendigkeit, Daten zu synchronisieren. Kein Bedarf, zwei Systeme zu warten und zu betreiben. Es funktionierte einfach und machte uns glücklich (nach einigen Anpassungen natürlich). Einfachheit.
Seitdem habe ich PostgreSQL für viele Anwendungsfälle in meiner Karriere als CTO / Interim Manager eingesetzt. Zuletzt nutzte ich PostgreSQL, um sehr umfangreiche Web-Analytics-Zeitreihendaten über sein TimescaleDB-Plugin zu speichern. Schauen Sie sich Privatracker - der beste Weg, Web-Analytics zu betreiben und die Privatsphäre Ihrer Besucher zu respektieren an - um es in Aktion zu sehen.
Viele andere haben das Thema aus verschiedenen Blickwinkeln diskutiert. Und jeder Artikel ist Ihre Zeit wirklich wert (SQL is Agile, Stephan Schmidt on Using SQL for Everything). Schauen Sie sich auch meinen LinkedIn-Post an.
Und wenn Sie PostgreSQL nutzen, kann ich Ihnen Hazel Bachrachs netten Beitrag “What I Wish Someone Told Me About Postgres” sehr empfehlen.
Meiner bescheidenen Meinung nach kommt die Stärke von PostgreSQL aus drei Quellen:
- Es ist zuverlässig und stabil.
- Es ist einfach zu betreiben, zu installieren und zu skalieren.
- Es vereinfacht Ihr IT-Setup massiv, indem es nicht nur ein RDBMS ist, sondern auch eine Volltextsuchmaschine, ein Dokumentenspeicher und vieles mehr…
Schauen wir genauer hin…
Zuverlässig und stabil
PostgreSQL ist langweilige, bewährte Technologie. Das erste PostgreSQL-Release stammt aus dem Jahr 1996. PostgreSQL ist auch sehr weit verbreitet - seit sehr langer Zeit. Das Beseitigen von Bugs - besonders in Datenbanksystemen - braucht Zeit. PostgreSQL hatte diese Zeit.
Es hat auch eine sehr aktive Community, die gewissenhaft immer mehr Features hinzufügt, ohne alte Teile zu beschädigen. In den letzten Jahren bekam PostgreSQL viele erstaunliche Features wie JSON-Dokumentenspeicherung, Partitionierungsunterstützung, Common Table Expressions und vieles mehr. Jedes neue Release von PostgreSQL ist aufregend und bringt neue nützliche Features.
Ja - PostgreSQL ist alt - aber die Features sind sehr, sehr modern - und PostgreSQL wird mit jedem Release besser.
Einfach zu betreiben, zu installieren und zu skalieren
PostgreSQL kann lokal sehr einfach installiert werden. Es ist in allen großen Linux-Distributionen enthalten, Teil von Mac brew, kann aber auch mit Anwendungen wie PostgresApp installiert werden.
Beim Ausführen von Tests ist es praktisch, Testcontainers mit PostgreSQL zu verwenden. Es war nie einfacher, Tests gegen eine echte PostgreSQL-Datenbank auszuführen, die zu 100% mit der Produktionsversion identisch ist.
Wenn Sie PostgreSQL auf einem Server betreiben möchten, können Sie es einfach per apt-get installieren. Oder es in einem Docker-Container ausführen.
Alle Cloud-Anbieter ermöglichen es Ihnen, PostgreSQL mit einem einzigen Klick zu betreiben (und zu skalieren!). Sie haben eine Fülle von Optionen zur Auswahl:
- Amazon AWS
- Google GCP
- Microsoft Azure
- ElephantSQL
- CrunchyData
- Timescale
- … und viele mehr …
Das macht PostgreSQL zu einem der am weitesten unterstützten Softwaresysteme auf dem Markt. Und für Sie bedeutet das weniger Wartung und mehr Zeit für die Entwicklung neuer Features für Kunden.
Vereinfacht Ihr IT-Setup
PostgreSQL in der Cloud zu betreiben erfordert bereits nur einen Klick. Aber es wird noch besser. PostgreSQL kann viele Systeme ersetzen, die Sie sonst betreiben müssten.
PostgreSQL ersetzt Solr und Elastic: Volltextsuche
PostgreSQL ermöglicht es Ihnen, Ihre Textdaten in für Benutzer durchsuchbare Daten zu verwandeln. Ohne ein separates System. Es ist auch sprachunabhängig und Sie werden nie Synchronisierungsprobleme zwischen Ihren Daten und Ihrem Volltextsuchsystem haben.
Der beeindruckendste Artikel zu diesem Thema ist, wie Contentful PostgreSQL nutzte, um Volltextsuche für ihre Benutzer zu ermöglichen. Es ist eine Geschichte der Einfachheit, die Wachstum ermöglicht.
Mehr zum Thema: https://www.postgresql.org/docs/current/textsearch.html
PostgreSQL ersetzt MongoDB: Exzellente JSON-Unterstützung
PostgreSQL hat eine hervorragende Unterstützung für das Speichern und Abfragen(!) von JSON. Es verfügt auch über einen Indextyp (GIN), der diese Operationen blitzschnell macht. Braucht man MongoDB noch?.
The Guardian schrieb auch einen exzellenten Artikel darüber, wie sie von Mongo zu PostgreSQL gewechselt haben. Danke fürs Teilen, Jan-Otto! Hazel hat auch einen netten Beitrag über jsonb geschrieben und worauf man bei der Verwendung achten sollte.
PostgreSQL ersetzt Kafka und RabbitMQ: PostgreSQL als Queue
Events, Queues und persistente Logs werden in heutigen Softwaresystemen immer wichtiger. Systeme wie Kafka, RabbitMQ, SQS und andere bieten diese Funktionalität. Aber sie zu warten ist lästig, individuell und erfordert spezielle Fähigkeiten.
Die gute Nachricht: Sie können einfach PostgreSQL verwenden. Die Magie kommt von
- SELECT .. FOR UPDATE
- SELECT .. SKIP LOCKED
Mit diesen SQL-Features können Sie eine Tabelle effektiv als Queue verwenden. Entweder persistent mit einem Cursor und vielen Consumern oder im Read-Once-Modus.
Der Artikel bei CrunchyData erklärt dieses Konzept sehr gut.
Mein Tipp: Starten Sie mit PostgreSQL als Queuing-System. Erst wenn das nicht mehr ausreichend performt, wechseln Sie zu anderen Systemen wie Kafka, RabbitMQ oder SQS. Sie werden überrascht sein, wie gut PostgreSQL funktioniert.
PostgreSQL ersetzt Clickhouse: Hochvolumige Zeitreihendaten
Zeitreihendaten sind speziell. Oft erhält man viele Datenpunkte in sehr kurzer Zeit. Und dann muss man die Daten häufig aggregieren, Statistiken darüber erstellen und so weiter.
Es gibt spezialisierte Softwaresysteme wie Clickhouse (übrigens großartig…). Aber Sie können auch ein Plugin für PostgreSQL verwenden, das (nahezu) das Gleiche ermöglicht: Timescale.
Ich habe Timescale verwendet und kann es empfehlen. Die gute Nachricht ist, dass Sie weiterhin PostgreSQL verwenden können - auch für hochvolumige Daten problemlos. Kein Bedarf, etwas Neues zu lernen und zu warten.
PostgreSQL als Vektordatenbank für AI-Workflows
Timescale hat kürzlich die pgvector-Erweiterung veröffentlicht, die Ihr PostgreSQL in eine Vektordatenbank verwandelt. Dies ermöglicht es Ihnen, die bereits bekannte Technologie für die Indizierung und den Abruf relevanter Daten zu nutzen. Das ist ein wesentlicher Teil von AI-LLM-Workflows.
Timescale hat auch kürzlich pgai angekündigt, das pgvector beinhaltet, aber auch viele andere nützliche Erweiterungen, die es super einfach machen, Daten zu indizieren, LLM-Modelle aufzurufen und Daten basierend auf Ähnlichkeit abzurufen.
PostgreSQL ersetzt Redis: Nicht-persistentes Hochleistungs-Caching
Caching ist wichtig. Die meisten Anwendungen verwenden etwas wie Redis als Cache, um Informationen wie Sessions und mehr schnell abzurufen. Ein Cache kann per Definition Daten verlieren und kann aus der Originalquelle regeneriert werden.
Aber warum Redis verwenden, wenn PostgreSQL so getunt werden kann, dass es (in den meisten Anwendungsfällen) genauso schnell ist wie ein Redis-Cache? Das Geheimnis ist die Verwendung einer UNLOGGED-Tabelle. Sie können sogar Redis’ automatisches Ablaufen durch einen Trigger emulieren. Darüber wurde viel geschrieben - ich kann nur empfehlen, es auszuprobieren.
PostgreSQL ersetzt das Dateisystem: Für Rohdaten
Für einen meiner Kunden mussten wir eine riesige Menge kleiner, binär kodierter Informationsstücke lesen und schreiben. Wir dachten zunächst, dass dies über das Dateisystem der schnellste Weg wäre.
Nach einigen Leistungstests wurde klar, dass PostgreSQL für unseren Anwendungsfall sogar schneller war als das Lesen vom Dateisystem. PostgreSQL nutzt das Dateisystem sehr effizient für seine Daten - und es fügt viel Caching und effiziente Lese- und Schreibstrategien hinzu, die das Schreiben und Lesen von Rohdaten auf einem Dateisystem übertreffen können.
Wir verwendeten Flatbuffers, um die Daten in einer Blob-Spalte zu speichern. Daten wurden dann auf dem Client deserialisiert. Diesen Ansatz möchten Sie vielleicht auch ausprobieren.
PostgreSQL ersetzt Ihre Graphdatenbank
Hierarchische Daten können in SQL über rekursive Abfragen verwaltet werden. Das ist in Ordnung, aber auch super schwer zu lesen, zu warten und zu debuggen. Ganz zu schweigen von der Performance.
Der bessere Weg ist der LTREE-Datentyp von PostgreSQL. Er hat mir nicht nur einmal geholfen, hierarchische Tag-Strukturen zu implementieren. Einfach zu lesen, zu warten und blitzschnell.
PostgreSQL ersetzt Ihren Microservice
Die meisten “Microservices” heutzutage drehen sich nur um Modelle, das Abrufen von Daten aus einer Datenbank und das Zurückgeben von JSON an den Client.
Aber wissen Sie was? PostgreSQL kann jede Abfrage in ein JSON-Ergebnis umwandeln. Das ersetzt effektiv Ihre Server-Middleware. Es gibt Vor- und Nachteile bei diesem Ansatz, aber es zeigt die Fähigkeiten von PostgreSQL. Der großartige Lukas Eder hat über das Thema geschrieben - nicht PostgreSQL-spezifisch - aber alles dort Erwähnte ist in PostgreSQL sehr gut machbar.
PostgreSQL - Ersatz für Ihre PlayStation 5
Nun ja. Ein Enthusiast hat Tetris als Common Table Expressions in reinem SQL implementiert. Verrückt. Und vielleicht nicht ganz ernst zu nehmen.
Fazit
Die obige Liste ist nicht sehr vollständig. PostgreSQL ist ein sehr flexibles Stück Software. Und es kann mit Plugins erweitert werden, um immer mehr zu leisten.
Sie brauchen Einfachheit, wenn Sie schnell vorankommen wollen. Wenn Sie auf eine neue Anforderung stoßen, fragen Sie immer: Kann PostgreSQL das nicht? Und brauchen wir wirklich diese glänzende neue Technologie X?
PostgreSQL ist vielleicht nicht die Antwort auf alles - aber es ist die Antwort auf viel mehr, als Sie vielleicht denken!
