PostgreSQL

Ist ein freies, objektrelationales Datenbankmanagementsystem (RDMS), welche seit den 1980er Jahren entwickelt wird. Seit 1997 wird die Software von einer Open-Source-Community weiterentwickelt und entspricht weitgehend dem SQL-Standard SQL:2011.  Sie ist ACID-konform und unterstützt erweiterbare Datentypen, Operatoren Funktionen und Aggregate. Die maximale Datenbankgröße der PostgreSQL ist nur durch die zur Verfügung stehenden Speicher begrenzt.

  • Durch Master-Slave-Replikation (z.B. Patroni) kann die Ausfallsicherheit erhöht und der Datenverlust minimiert werden, wobei aus Konsistenz- und Performance-Gründen zwischen asynchroner und synchroner Replikation unterschieden wird. Schreiboperationen werden nur vom Master bearbeitet, die Leseanfragen können aber zusätzlich auf die Slaves verteilt werden, wobei nur bei synchroner Replikation die Konsistenz sichergestellt werden kann. 

  • Ein Multi-Master-Clustering (z.B. BDR), wo Lese-/Schreib-Anfragen von allen Knoten angenommen und bearbeitet werden, wird als bidirektionale asynchrone Replikation angeboten und ist auf Grund der Asynchronität mit Limitierungen bei der Konsistenz und datenverlustfreien Konfliktbehandlung verbunden.

  • Die Verteilung des Datenbestandes auf mehrere Knoten (Sharding) ist möglich, wobei die Atomarität bei verteilten Schreiboperationen mittels 2-Phase-Commit und eine gewünschte Konsistenz bei verteilten Leseoperationen global über das Cluster nicht sichergestellt werden kann (see). Ein Rebalancing des Datenbestandes bei Hinzunahme/Entfernung eines Knoten in/aus dem Cluster ist nicht vorgesehen. Verschiedene Hersteller (z.B. CitusData) bieten entsprechende Ergänzungen mit Limitierungen (z.B. CitusData) an.


Pros:

  • als RDMS bietet gute Unterstützung von Beziehungen → Trigger- und ForeignKey-Constraints - Mechanismen sorgen für Datenintegrität von einander abhängigen Daten
  • als RDMS bietet flexible Abfragemöglichkeiten → mittels Joins können Abfragen von einander abhängigen Daten spezifiziert werden
  • als RDMS ermöglicht komfortable Integration in Anwendung durch ACID-Eigenschaft 
  • Speziell das Multi-Version Concurrency Control (MVCC) von PostgreSQL bietet hohe Performance bei Sicherstellung der Konsistenz bei Transaktionen und Durchführung von Datenbank-Replikationen.

Cons:

  • als RDMS ausfalltolerante Verteilung der Datenbank auf mehrere Knoten (Clustering) auf Grund der hohen Konsistenz-Anforderungen durch ACID nur mit Limitierungen umsetzbar (CAP-Theorem)
  • Die Verteilung des Datenbestandes auf mehrere Knoten (Sharding) ist von PostgreSQL ohne ACID umgesetzt, entsprechende Erweiterungen mit Limitierungen sind notwendig

Inhalt dieser Seite


Mitwirkende an dieser Seite:

UserEditsCommentsLabels
Herr Frank Thomschke 700
Herr Torsten Simon 300