Müssen neben al­pha­nu­me­ri­schen (Buch­sta­ben, Zahlen, Son­der­zei­chen) auch komplexe Da­ten­ty­pen oder mul­ti­me­dia­le Inhalte verwaltet werden sollen, stoßen klas­si­sche re­la­tio­na­le Datenbank-Ma­nage­ment­sys­te­me schnell an ihre Grenzen. Doch ob­jekt­re­la­tio­na­le Da­ten­ban­ken bzw. Datenbank-Ma­nage­ment­sys­te­me, die das tra­di­tio­nel­le Modell um ob­jekt­ori­en­tier­te Ansätze erweitern, liefern die passende Antwort auf diese Pro­ble­ma­tik: Durch ob­jekt­re­la­tio­na­le Ab­bil­dun­gen (engl. object-re­la­tio­nal mapping) er­mög­li­chen diese es nämlich, Objekte mithilfe von An­wen­dun­gen auf Basis ob­jekt­ori­en­tier­ter Pro­gram­mier­spra­chen auch in re­la­tio­na­len Systemen abzulegen. Eine der in diesem Zu­sam­men­hang be­lieb­tes­ten und zugleich ältesten Lösungen ist die Open-Source-Datenbank Post­greS­QL, die auch unter dem Namen Postgres bekannt ist.

Was ist Post­greS­QL?

Post­greS­QL blickt auf eine über 30-jährige Ent­wick­lungs­his­to­rie zurück. Seinen Ursprung hat das ob­jekt­re­la­tio­na­le Datenbank-Ma­nage­ment­sys­tem (ORDBMS) dabei in dem POSTGRES-Projekt der Uni­ver­si­ty of Ca­li­for­nia in Berkeley. Das wurde bereits 1986 unter der Führung von Michael Ston­ebra­ker gestartet und unter anderem von der Defense Advanced Research Project Agency (DARPA) und der National Science Foun­da­ti­on (NSF) ge­spon­sert. 1994 er­wei­ter­ten die Studenten Andrew Yu und Jolly Chen den Basiscode um einen SQL-In­ter­pre­ter, woraufhin man diese neue und rund 30 bis 50 Prozent schnel­le­re Ab­wand­lung unter dem Namen Postgres95 als Open-Source-Lösung freigab (unter eigener Lizenz, die den BSD- und MIT-Lizenzen ähnelt). Zwei Jahre später erhielt die Da­ten­bank­an­wen­dung mit Version 6.0 den bis heute gültigen Namen Post­greS­QL.

Hinweis

Neben dem neuen Namen Post­greS­QL wird weiterhin auch der ur­sprüng­li­che Name Postgres (mitt­ler­wei­le nur sehr selten komplett in Groß­buch­sta­ben ge­schrie­ben) für das Da­ten­bank­sys­tem verwendet. Außer durch eine gewisse Nostalgie lässt sich das schlicht auch dadurch erklären, dass die Aus­spra­che von Postgres einfacher ist.

Das POSTGRES-Projekt leistete wertvolle Pio­nier­ar­beit und er­ar­bei­te­te zahl­rei­che Konzepte, die erst we­sent­lich später Einzug in andere (und haupt­säch­lich kom­mer­zi­el­le) Da­ten­ban­ken­sys­te­me fanden. Letztlich zeichnet sich Post­greS­QL nicht nur als SQL-konforme Datenbank, sondern auch durch folgende moderne Features aus:

  • Mög­lich­keit komplexer Abfragen
  • Fremd­schlüs­sel (Foreign Keys) zur Ver­knüp­fung von Daten zweier Tabellen
  • Trigger, die bei Input au­to­ma­tisch ausgelöst werden und diesen überpüfen, be­stä­ti­gen, ändern, löschen oder wahlweise Re­fe­renz­da­ten einsetzen
  • ak­tua­li­sier­ba­re Ansichten
  • um­fas­sen­des Trans­ak­ti­ons­kon­zept
  • Mul­ti­ver­si­on Con­cur­ren­cy Control (MVCC) zur ef­fi­zi­en­ten Aus­füh­rung gleich­zei­ti­ger Da­ten­bank­zu­grif­fe

Benutzer können Post­greS­QL darüber hinaus dank der freien Li­zen­zie­rung hoch­gra­dig mo­di­fi­zie­ren und erweitern und auf diese Weise bei­spiels­wei­se neue Da­ten­ty­pen, Funk­tio­nen, Ope­ra­to­ren, In­de­xie­rungs­me­tho­den oder pro­ze­du­ra­le Sprachen (Pro­gram­mier­spra­chen zum Schreiben von Funk­tio­nen und Triggern) hin­zu­fü­gen.

Postgres: Eckdaten und Sys­tem­vor­aus­set­zun­gen

Die Fle­xi­bi­li­tät von Post­greS­QL zeigt sich nicht nur im Bereich der Funk­tio­na­li­tät und Erweiter- und An­pass­bar­keit – auch hin­sicht­lich des Soft- und Hardware-Setups gewährt die Datenbank reichlich Spielraum. So ist Postgres in den meisten UNIX/Linux-Dis­tri­bu­tio­nen bereits von Werk an enthalten und wird von Apple seit Mac OS X Lion (10.7) als Stan­dard­da­ten­bank aus­ge­lie­fert. Einzige Vor­aus­set­zung ist, dass eine aktuelle gmake-Version (3.80 oder höher) in­stal­liert ist (in den fertigen Bi­när­da­tei­en schon enthalten). Auch Windows-Be­triebs­sys­te­me sind dank ent­spre­chen­der In­stal­la­ti­ons­pa­ke­te als Plattform für das System wählbar. Die er­for­der­li­che Re­chen­leis­tung und Spei­cher­ka­pa­zi­tät hängen lediglich von der Größe des geplanten Da­ten­bank­sys­tems ab – die Open-Source-Software selbst benötigt nur knapp 20 MB.

Dass man in der Praxis eher durch die eigenen Spei­cher­ka­pa­zi­tä­ten als durch die Grenzen von Post­greS­QL ein­ge­schränkt wird, ver­deut­li­chen die folgenden Eckdaten der ob­jekt­re­la­tio­na­len Datenbank:

Maximale Da­ten­bank­grö­ße un­be­grenzt
Maximale Größe einer Tabelle 32 Terabyte
Maximale Größe eines Da­ten­sat­zes 1,6 Terabyte
Maximale Größe eines Feldes 1 Gigabyte
Maximale Anzahl an Spalten je nach Datentyp 250 bis 1.600
Maximale Anzahl an Zeilen un­be­grenzt
Maximale Anzahl an Indexen un­be­grenzt

Wie funk­tio­niert Post­greS­QL?

Postgres basiert auf dem typischen Client-Server-Modell: Die zentrale Ser­ver­kom­po­nen­te mit dem Namen „post­mas­ter“ verwaltet sämtliche Da­ten­bank­da­tei­en sowie alle Ver­bin­dun­gen, die zwecks Kom­mu­ni­ka­ti­on (In- und Output) mit dem Da­ten­bank­ser­ver aufgebaut werden. Nutzer benötigen für den Ver­bin­dungs­auf­bau lediglich ein passendes Client-Programm, wobei das Post­greS­QL-Soft­ware­pa­ket mit psql bereits eine native Lösung zur Bedienung über die Kom­man­do­zei­le bzw. das Terminal in­te­griert hat. Al­ter­na­tiv kann man auf ver­schie­de­ne An­wen­dun­gen mit gra­fi­scher Be­nut­zer­ober­fläche aus­wei­chen – wie bei­spiels­wei­se pgAdmin oder phpP­gAd­min, die sich optional in­stal­lie­ren und nutzen lassen. Bei in­ter­ak­ti­ven Websites übernimmt in der Regel der Webserver die Rolle des Clients.

Tipp

Viele Linux-Dis­tri­bu­tio­nen liefern mit pgAccess einen eigenen gra­fi­schen Postgres-Client mit.

Für welche Projekte ist Post­greS­QL geeignet?

Als bewährtes und äußerst flexibles Datenbank-Ma­nage­ment­sys­tem kommt Postgres in zahl­rei­chen Branchen und Szenarien zum Einsatz. Die ob­jekt­re­la­tio­na­le Datenbank zeichnet sich dabei als erst­klas­si­ge Basis aus, um die ver­schie­dens­ten An­wen­dun­gen sicher zu betreiben. So bildet das Open-Source-Projekt aufgrund des in­te­grier­ten Trans­ak­ti­ons­kon­zepts und der Un­ter­stüt­zung von MVCC (Multiversion Con­cur­ren­cy Control: Verfahren zur ef­fi­zi­en­ten Auf­füh­rung kon­kur­rie­ren­der Zugriffe) bei­spiels­wei­se die perfekte Lösung für On­line­ban­king-Software. Auch Ana­ly­se­pro­gram­me wie Matlab oder R har­mo­nie­ren mit der Datenbank, weshalb Post­greS­QL auch oft in Kom­bi­na­ti­on mit diesen Pro­gram­men genutzt wird. In Kom­bi­na­ti­on mit der Er­wei­te­rung PostGIS, die Hunderte von Funk­tio­nen zur Arbeit mit Geodaten zur Verfügung stellt, überzeugt Postgres zudem auch bei der Arbeit mit räum­li­chen und geo­gra­fi­schen Daten.

Auch als Lösung für Web­pro­jek­te ist Post­greS­QL gefragt: Das ob­jekt­re­la­tio­na­le System funk­tio­niert mit diversen modernen Frame­works wie Django, Node.js oder Ruby on Rails und un­ter­stützt die klas­si­schen Web­spra­chen wie PHP. Dank der Un­ter­stüt­zung von syn­chro­ner und asyn­chro­ner Re­pli­ka­ti­on lassen sich die ge­spei­cher­ten Daten zudem leicht auf mehrere Server verteilen, um eine hohe Aus­fall­si­cher­heit und minimale Zu­griffs­zeit auf wichtige Daten zu er­mög­li­chen.

Hinweis

Die gute Un­ter­stüt­zung von JSON macht Post­greS­QL auch zu einer ex­zel­len­ten Da­ten­bank­lö­sung, um NoSQL-Workloads zu skalieren.

So funk­tio­niert die Post­greS­QL-In­stal­la­ti­on

Wer Postgres für sein Projekt nutzen möchte, der kann das Datenbank-Ma­nage­ment­sys­tem in wenigen Schritten selbst in­stal­lie­ren, ohne eine Lizenz oder Ähnliches erwerben zu müssen. Im Download-Portal der of­fi­zi­el­len Post­greS­QL-Homepage stehen zu diesem Zweck Bi­när­da­tei­en sowie Links zu den Re­po­si­to­rys der Quell­pa­ke­te für BSD, Linux, macOS, Solaris und Windows zur Verfügung, die man im Rahmen der Open-Source-Lizenz kos­ten­frei in­stal­lie­ren und nutzen darf. Root-Rechte werden hierfür nicht benötigt: Einfache Ad­mi­nis­tra­tor-Rechte sind für die Aus­füh­rung voll­kom­men aus­rei­chend. Bei­spiel­haft zeigen wir in den beiden folgenden Ab­schnit­ten, wie die Post­greS­QL-In­stal­la­ti­on unter Linux (Ubuntu 17.10) und Windows funk­tio­niert.

Post­greS­QL unter Linux (Ubuntu 17.10) in­stal­lie­ren

Das apt-Re­po­si­to­ry von Postgres un­ter­stützt offiziell die LTS-Versionen von Ubuntu (ab 14.04) sowie einige andere – wie bei­spiels­wei­se Ubuntu 17.04. Zudem funk­tio­nie­ren die Quell­pa­ke­te häufig auch bei anderen Versionen. Das Post­greS­QL-Team empfiehlt aber, eine möglichst aktuelle LTS-Variante zu verwenden, damit Anwender lang­fris­tig den best­mög­li­chen Nutzen aus dem Datenbank-Ma­nage­ment­sys­tem ziehen können. Da die Pakete unter Ubuntu bereits im Standard-Re­po­si­to­ry enthalten sind, lassen sich diese bequem mit dem Pa­ket­ma­na­ger apt in­stal­lie­ren:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

Post­greS­QL wird durch diesen Befehl in­stal­liert, wobei die Software au­to­ma­tisch den Linux-Nutzer mit dem Namen „postgres” für den Da­ten­bank­zu­griff anlegt. Aus Si­cher­heits­grün­den sollte dieser lediglich für die Arbeit mit der Datenbank genutzt werden. Außerdem ist es emp­feh­lens­wert, dieses Profil im ersten Schritt mit einem Passwort zu versehen (stan­dard­mä­ßig ist keines ein­ge­tra­gen). Hierfür muss man lediglich den folgenden Befehl und an­schlie­ßend zwei Mal das Kennwort der Wahl eingeben:

sudo passwd postgres

Parallel zu dem Linux-User „postgres“ existiert der gleich­na­mi­ge Datenbank-User, der für die Ad­mi­nis­tra­ti­on der Datenbank benötigt wird und ebenfalls ein starkes Passwort erhalten sollte. Das gelingt durch die Eingabe folgender Terminal-Befehle („neues-passwort“ ist dabei Platz­hal­ter für das ge­wünsch­te Kennwort und ent­spre­chend zu ersetzen):

su - postgres
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'neues-passwort';"

Um zu über­prü­fen, ob die In­stal­la­ti­on er­folg­reich war, sollte man mit dem „postgres“-Linux-Account testweise eine Datenbank (hier: testdb) anlegen und mit dem Terminal-Client psql ansteuern:

su - postgres
createdb testdb
psql testdb

Im Terminal sieht man dann diesen Output der psql-Client-Shell, die sich mit be­lie­bi­gen SQL-Kommandos bedienen lässt:

Post­greS­QL unter Windows in­stal­lie­ren

Die In­stal­la­ti­on von Postgres auf Windows-Rechnern geht dank des in­ter­ak­ti­ven durch En­ter­pri­seDB zer­ti­fi­zier­ten In­stal­lers leicht von der Hand: Der kos­ten­freie In­stal­la­ti­ons­hel­fer des Soft­ware­her­stel­lers, der Zu­satz­tools sowie kom­mer­zi­el­len Support für Post­greS­QL anbietet, wird von selbigem auf der fir­men­ei­ge­nen Homepage zum Download zur Verfügung gestellt. Es gilt lediglich, die ge­wünsch­te Version des Datenbank-Ma­nage­ment­sys­tems sowie die Ziel­platt­form aus­zu­wäh­len und an­schlie­ßend auf „DOWNLOAD NOW“ zu klicken:

Der her­un­ter­ge­la­de­ne Installer lässt sich per Dop­pel­klick starten und in­stal­liert im ersten Schritt den Microsoft-Compiler Visual C++, sofern dieser noch nicht auf dem System ein­ge­rich­tet ist. Danach wählt man den Spei­cher­ort für Post­greS­QL und hat die Mög­lich­keit, einzelne Kom­po­nen­ten des In­stal­la­ti­ons­pa­kets von der In­stal­la­ti­on aus­zu­schlie­ßen. In jedem Fall werden der Post­greS­QL-Server und die Command-Line-Tools benötigt – der grafische Client pgAdmin sowie der Stack Builder (für einfache Downloads und In­stal­la­tio­nen von Er­wei­te­run­gen) sind nicht zwingend er­for­der­lich, er­leich­tern die Arbeit mit dem Datenbank-Ma­nage­ment­sys­tem aber enorm.

Wurde auch der Spei­cher­ort für die Daten angegeben, steht noch die Vergabe eines Passworts für das Datenbank-Ad­mi­nis­tra­tor-Profil „postgres“ aus. Die vor­ge­ge­be­nen Port- und Lo­ka­li­sie­rungs­ein­stel­lun­gen kann man un­ver­än­dert bei­be­hal­ten, bevor man die In­stal­la­ti­on im letzten Schritt endgültig startet.

Nach er­folg­rei­cher In­stal­la­ti­on lässt sich über die Be­nut­zer­ober­flä­che von pgAdmin (sofern mit­in­stal­liert) in wenigen Schritten eine Ver­bin­dung zum Post­greS­QL-Server aufbauen. Zu diesem Zweck wählt man die ein­ge­rich­te­te Postgres-Version in der Server-Auf­lis­tung per Rechts­klick aus und drückt an­schlie­ßend auf „Connect Server“.

Nach Eingabe des zuvor ver­ge­be­nen Passworts für den Ad­mi­nis­tra­tor-Account „postgres“ initiiert der Client die Ver­bin­dung.

Die Vor- und Nachteile von Post­greS­QL im ta­bel­la­ri­schen Überblick

Vorteile Nachteile
Open Source Nicht bei allen Hostern stan­dard­mä­ßig verfügbar
Hoch­gra­dig er­wei­ter­bar Aus­bau­fä­hi­ge und lediglich eng­lisch­spra­chi­ge Do­ku­men­ta­ti­on
Zum großen Teil konform mit SQL-Standard Ver­gleichs­wei­se geringe Le­se­ge­schwin­dig­keit
Ver­ar­bei­tung komplexer Da­ten­ty­pen möglich (z. B. Geodaten)  
Flexible Voll­text­su­che  
Er­stel­lung eigener Funk­tio­nen, Trigger, Da­ten­ty­pen etc. möglich  
Gute Sprach­un­ter­stüt­zung (Python, Java, Perl, PHP, C, C++ etc.)  
Un­ter­stützt JSON  
Platt­form­über­grei­fend  
Zum Hauptmenü