PostgreSQL: Unterschied zwischen den Versionen
K Textersetzung - „Man-Pages“ durch „Man-Page“ |
|||
(18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
''' | '''PostgreSQL''' (postgres)- [[Freie Software|freies]], [[Objektrelationale Datenbank|objektrelationales Datenbankmanagementsystem]] (ORDBMS) | ||
== Beschreibung == | == Beschreibung == | ||
* Entwicklung begann in den 1980er Jahren | |||
* seit 1997 wird die Software von einer [[Open Source|Open-Source]]-[[Gemeinschaft|Community]] weiterentwickelt | |||
{| class="wikitable options float" | {| class="wikitable options float" | ||
|- | |- | ||
Zeile 13: | Zeile 17: | ||
| Website || [https://www.postgresql.org/ www.postgresql.org] | | Website || [https://www.postgresql.org/ www.postgresql.org] | ||
|} | |} | ||
; <nowiki>SQL:2011</nowiki> | ; <nowiki>SQL:2011</nowiki> | ||
PostgreSQL ist weitgehend konform mit dem [[SQL]]-Standard SQL:2011, das heißt, der Großteil der Funktionen ist verfügbar und verhält sich wie definiert | PostgreSQL ist weitgehend konform mit dem [[SQL]]-Standard SQL:2011, das heißt, der Großteil der Funktionen ist verfügbar und verhält sich wie definiert | ||
PostgreSQL ist in den meisten [[Linux-Distribution]]en enthalten, allerdings oft in der Version, die bei Erscheinen des Release aktuell war | * ostgreSQL ist vollständig [[ACID]]-konform (inklusive der [[Data Definition Language]]) und unterstützt erweiterbare [[Datentyp]]en, [[Datenbankoperator|Operatoren]], Funktionen und [[Aggregation (OLAP)|Aggregate]] | ||
* Obwohl sich die Entwicklergemeinde sehr eng an den SQL-Standard hält, gibt es dennoch eine Reihe von PostgreSQL-spezifischen Funktionalitäten, wobei in der Dokumentation bei jeder Eigenschaft ein Hinweis erfolgt, ob dies dem SQL-Standard entspricht, oder ob es sich um eine spezifische Erweiterung handelt | |||
* Darüber hinaus verfügt PostgreSQL über ein umfangreiches Angebot an Erweiterungen durch Dritthersteller, wie zum Beispiel [[PostGIS]] zur Verwaltung von [[Geodaten]] | |||
PostgreSQL ist in den meisten [[Linux-Distribution]]en enthalten, allerdings oft in der Version, die bei Erscheinen des Release aktuell war | |||
* Aktuellere Versionen gibt es für viele Linux-Distributionen in von der PostgreSQL Developer Group bereitgestellten Repositories. [[Apple]] liefert von der Version [[Mac OS X Lion]] (10.7) an PostgreSQL als Standarddatenbank aus | |||
== Eigenschaften == | == Eigenschaften == | ||
Zeile 37: | Zeile 31: | ||
* Referentielle [[Integritätsbedingung|Integrität]] (unter anderem [[Constraint]]s, Fremdschlüssel) | * Referentielle [[Integritätsbedingung|Integrität]] (unter anderem [[Constraint]]s, Fremdschlüssel) | ||
* Mengenoperationen | * Mengenoperationen | ||
* Sehr umfangreiches Angebot an [[Datentyp]]en, auch über den im ANSI/ISO Standard beschriebenen hinaus | * Sehr umfangreiches Angebot an [[Datentyp]]en, auch über den im ANSI/ISO Standard beschriebenen hinaus | ||
* Beispielsweise können [[IP-Adresse]]n, [[MAC-Adresse]]n, zweidimensionale geometrische Figuren (Kreis, Linie, Polygon usw.) und Bereiche (von/bis) gespeichert werden | |||
* Maximale Datenbankgröße nur durch zur Verfügung stehenden Speicher begrenzt | * Maximale Datenbankgröße nur durch zur Verfügung stehenden Speicher begrenzt | ||
* [[Sicht (Datenbank)|Views]], die mit Hilfe von Regeln (Rules und Triggers) auch schreibfähig sein können ''(Updatable Views)'' | * [[Sicht (Datenbank)|Views]], die mit Hilfe von Regeln (Rules und Triggers) auch schreibfähig sein können ''(Updatable Views)'' | ||
Zeile 45: | Zeile 40: | ||
* Export und Import sowohl von Daten als auch von Datenbankstrukturen (Schemata) | * Export und Import sowohl von Daten als auch von Datenbankstrukturen (Schemata) | ||
* Erweiterbarkeit durch Funktionen, selbstdefinierbare Datentypen und Operatoren | * Erweiterbarkeit durch Funktionen, selbstdefinierbare Datentypen und Operatoren | ||
* Asynchrone und synchrone [[Replikation (Datenverarbeitung)|Replikation]] | * Asynchrone und synchrone [[Replikation (Datenverarbeitung)|Replikation]] | ||
* Der Vorteil der synchronen Replikation liegt in der Sicherstellung, dass die Transaktion mindestens auf zwei Servern tatsächlich ausgeführt wurde, womit eine vollständige Sicherung jederzeit garantiert werden kann (Hot Standby) | |||
* Diese Ausfallsicherheit wird naturgemäß durch eine längere Wartezeit auf das [[Commit]] erkauft | |||
* Daher gibt es auch die Möglichkeit, besonders wichtige Geschäftsprozesse wie finanzielle Transaktionen synchron zu replizieren, und bei weniger wichtigen Transaktionen, wie der Aufzeichnung der Benutzerinteraktionen, die sehr viel schnellere asynchrone Replikation zu nutzen | |||
=== Erweiterungen === | === Erweiterungen === | ||
Eine Reihe von durch den [[Benutzer]] zu installierenden Zusatzmodulen steht zur Verfügung, darunter mit GiST (Generalized Search Tree) eine universelle [[Schnittstelle]], um Such- und Sortierverfahren in weiten Grenzen selbst definieren zu können | Eine Reihe von durch den [[Benutzer]] zu installierenden Zusatzmodulen steht zur Verfügung, darunter mit GiST (Generalized Search Tree) eine universelle [[Schnittstelle]], um Such- und Sortierverfahren in weiten Grenzen selbst definieren zu können | ||
* Eine Anwendung davon ist [[PostGIS]], das geografische Objekte und Datenstrukturen verwalten und damit als Datenbank für [[Geoinformationssystem]]e (GIS) dienen kann | |||
* Eine andere GiST-Anwendung ist [[OpenFTS]] ([[Open Source]] Full Text Search), das [[Volltextrecherche]] in DB-Objekten erlaubt | |||
Eine Reihe von Erweiterungen beschäftigt sich mit [[Rechnerverbund|Clustering]] und [[Replikation (Datenverarbeitung)|Replizierung]], dem parallelen Einsatz und Abgleich verteilter DB-[[Server]] | Eine Reihe von Erweiterungen beschäftigt sich mit [[Rechnerverbund|Clustering]] und [[Replikation (Datenverarbeitung)|Replizierung]], dem parallelen Einsatz und Abgleich verteilter DB-[[Server]] | ||
Viele Erweiterungen bieten zusätzliche Datentypen an, beispielsweise solche für [[IBAN]]s, [[ISBN]]s, [[European Article Number|EANs]] | Viele Erweiterungen bieten zusätzliche Datentypen an, beispielsweise solche für [[IBAN]]s, [[ISBN]]s, [[European Article Number|EANs]] | ||
* Einige Erweiterungen sind im Lieferumfang des Projekts bereits enthalten und brauchen lediglich für die jeweilige Datenbank (nicht den Server an sich) aktiviert zu werden | |||
=== Grenzwerte === | === Grenzwerte === | ||
In diesem Abschnitt werden einige Beschränkungen einer älteren Version beschrieben | In diesem Abschnitt werden einige Beschränkungen einer älteren Version beschrieben | ||
* Da inzwischen neuere Releases bereitgestellt wurden, könnten einige davon weggefallen sein | |||
Die hier beschriebenen Beschränkungen betreffen die Versionen 8.4 bis 9.5 | Die hier beschriebenen Beschränkungen betreffen die Versionen 8.4 bis 9.5 | ||
* maximale Größe der Datenbank: unbeschränkt | * maximale Größe der Datenbank: unbeschränkt | ||
Zeile 68: | Zeile 70: | ||
=== Upgrade der Datenbank === | === Upgrade der Datenbank === | ||
Jede [[Versionsnummer#Aufbau und Bedeutung|Nebenversionsnummer]] wird von der PostgreSQL-Entwickler-[[Online-Community|Community]] fünf Jahre lang weitergepflegt | Jede [[Versionsnummer#Aufbau und Bedeutung|Nebenversionsnummer]] wird von der PostgreSQL-Entwickler-[[Online-Community|Community]] fünf Jahre lang weitergepflegt | ||
* Revisionen enthalten Leistungsverbesserungen und Fehlerbereinigungen, aber niemals neue Funktionen | |||
* Die älteste derzeit (Stand 11/2023) noch gepflegte Versionslinie ist 11, die im Oktober 2018 erschien | |||
Bei einer Software-Aktualisierung müssen bestehende Datenbanken vorher gesichert, danach in der neuen PostgreSQL-Version neu angelegt und die Daten aus der vorherigen Sicherung eingespielt werden | |||
* Dies ist dann erforderlich, wenn sich erste Stelle der Versionsnummer geändert hat, nicht jedoch bei Änderungen der zweiten Stelle | |||
Alle noch unterstützten Versionen liefern ein Werkzeug namens pg_upgrade mit, welches das Datenverzeichnis ohne das vorher notwendige Sichern und Wiedereinspielen der Datenbank aktualisieren kann | |||
Nach einem Import größerer Datenmengen in eine Datenbank sollte der Befehl „<code>ANALYZE</code>“ ausgeführt werden, damit die Analyse Tabelle „pg_statistics“ richtig befüllt wird | |||
* Unterbleibt diese Analyse, kann dies zu Performanzproblemen führen | |||
Ansonsten wird dies, genau wie das Kommando „<code>VACUUM</code>“ zur Freigabe von Speicherplatz (eine Art [[Garbage Collection]]) in regelmäßigen Abständen automatisch durchgeführt | |||
== Softwarewerkzeuge == | == Softwarewerkzeuge == | ||
PostgreSQL selbst läuft als Hintergrundprozess und kann auf verschiedene Weise interaktiv bedient werden | PostgreSQL selbst läuft als Hintergrundprozess und kann auf verschiedene Weise interaktiv bedient werden | ||
Für die [[kommandozeile]]norientierte Bedienung und in Scripts wird die [[Konsolenanwendung]] ''psql'' mit der Installation mitgeliefert | Für die [[kommandozeile]]norientierte Bedienung und in Scripts wird die [[Konsolenanwendung]] ''psql'' mit der Installation mitgeliefert | ||
Ein [[MySQL]]-Migrationshilfswerkzeug ist in jedem freien PostgreSQL-Downloadpaket von EnterpriseDB enthalten | * Programme mit [[Grafische Benutzeroberfläche|grafischer Benutzeroberfläche]] zur Bedienung und Verwaltung der Datenbank werden auf dem Serverrechner meist nicht installiert, sondern auf Clientrechnern: [[Freie Software|freie Produkte]] sind etwa [[PgAdmin]] Daneben werden eine Vielzahl von kommerziellen Werkzeugen angeboten, die auch grafische [[Computer-aided software engineering|CASE]]-Modellierung, Im- und Export-Funktionen oder DB-Monitoring bieten | ||
Ein [[MySQL]]-Migrationshilfswerkzeug ist in jedem freien PostgreSQL-Downloadpaket von EnterpriseDB enthalten | |||
* Für viele andere Datenbanksysteme gibt es Migrationsunterstützung, insbesondere für Umsteiger von Oracle | |||
; pgtune | ; pgtune | ||
Ein wichtiges Werkzeug zur Konfiguration der Datenbank ist das Python Script „pgtune“ | Ein wichtiges Werkzeug zur Konfiguration der Datenbank ist das Python Script „pgtune“ | ||
* Die Standardeinstellungen der Datenbank sind oftmals nicht auf die verwendete Hardware angepasst, sondern so eingestellt, dass das System auf quasi jedem Rechner startet. „pgtune“ zeigt Lösungsvorschläge auf, wie man die Datenbank „tunen“ kann, um die Leistung der Datenbank deutlich zu steigern | |||
* Es gibt ein Online Tool um die wichtigsten Einstellungen der Datenbank zu ermitteln | |||
* Anfänger tun sich oftmals schwer, die geeigneten Konfigurationsparameter zu ermitteln | |||
* Das Tool wurde ursprünglich von Greg Smith (2ndQuadrant, mittlerweile EnterpriseDB) entwickelt | |||
<noinclude> | <noinclude> | ||
== Anhang == | == Anhang == | ||
=== Siehe auch === | === Siehe auch === | ||
{{Special:PrefixIndex/{{BASEPAGENAME}}}} | {{Special:PrefixIndex/{{BASEPAGENAME}}}} | ||
==== Dokumentation ==== | ==== Dokumentation ==== | ||
===== Man- | ===== Man-Page ===== | ||
===== Info-Pages ===== | ===== Info-Pages ===== | ||
==== Links ==== | ==== Links ==== | ||
===== Projekt ===== | ===== Projekt ===== | ||
# [https://www.postgresql.org/ www.postgresql.org] – offizielle Webpräsenz (englisch) | |||
# [http://www.postgres.de/ www.postgres.de] – deutsche Website betreffs PostgreSQL | |||
===== Weblinks ===== | ===== Weblinks ===== | ||
Zeile 114: | Zeile 114: | ||
# https://wiki.postgresql.org/wiki/Apt | # https://wiki.postgresql.org/wiki/Apt | ||
# [https://postgres.fm/ Postgres.fm], eine Podcastserie zum Thema PostgreSQL | # [https://postgres.fm/ Postgres.fm], eine Podcastserie zum Thema PostgreSQL | ||
; Werkzeuge und Erläuterungen | ; Werkzeuge und Erläuterungen | ||
Zeile 125: | Zeile 121: | ||
# [http://sql-info.de/postgresql/FAQ_german.html FAQ auf sql-info.de] | # [http://sql-info.de/postgresql/FAQ_german.html FAQ auf sql-info.de] | ||
[[Kategorie:PostgreSQL| ]] | [[Kategorie:PostgreSQL| ]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 6. November 2024, 12:40 Uhr
PostgreSQL (postgres)- freies, objektrelationales Datenbankmanagementsystem (ORDBMS)
Beschreibung
- Entwicklung begann in den 1980er Jahren
- seit 1997 wird die Software von einer Open-Source-Community weiterentwickelt
Hersteller | PostgreSQL Global Development Group |
Betriebssystem | Unix-Derivate, Linux, Microsoft Windows, macOS |
Kategorie | Datenbanksystem, Server |
Lizenz | PostgreSQL Lizenz vergleichbar der BSD-Lizenz oder der MIT-Lizenz |
Website | www.postgresql.org |
- SQL:2011
PostgreSQL ist weitgehend konform mit dem SQL-Standard SQL:2011, das heißt, der Großteil der Funktionen ist verfügbar und verhält sich wie definiert
- ostgreSQL ist vollständig ACID-konform (inklusive der Data Definition Language) und unterstützt erweiterbare Datentypen, Operatoren, Funktionen und Aggregate
- Obwohl sich die Entwicklergemeinde sehr eng an den SQL-Standard hält, gibt es dennoch eine Reihe von PostgreSQL-spezifischen Funktionalitäten, wobei in der Dokumentation bei jeder Eigenschaft ein Hinweis erfolgt, ob dies dem SQL-Standard entspricht, oder ob es sich um eine spezifische Erweiterung handelt
- Darüber hinaus verfügt PostgreSQL über ein umfangreiches Angebot an Erweiterungen durch Dritthersteller, wie zum Beispiel PostGIS zur Verwaltung von Geodaten
PostgreSQL ist in den meisten Linux-Distributionen enthalten, allerdings oft in der Version, die bei Erscheinen des Release aktuell war
- Aktuellere Versionen gibt es für viele Linux-Distributionen in von der PostgreSQL Developer Group bereitgestellten Repositories. Apple liefert von der Version Mac OS X Lion (10.7) an PostgreSQL als Standarddatenbank aus
Eigenschaften
- Umfassendes Transaktionskonzept, das Multiversion Concurrency Control (MVCC) unterstützt
- Ermöglicht komplexe Abfragen mit Unterabfragen (Subselects), auch geschachtelt
- Referentielle Integrität (unter anderem Constraints, Fremdschlüssel)
- Mengenoperationen
- Sehr umfangreiches Angebot an Datentypen, auch über den im ANSI/ISO Standard beschriebenen hinaus
- Beispielsweise können IP-Adressen, MAC-Adressen, zweidimensionale geometrische Figuren (Kreis, Linie, Polygon usw.) und Bereiche (von/bis) gespeichert werden
- Maximale Datenbankgröße nur durch zur Verfügung stehenden Speicher begrenzt
- Views, die mit Hilfe von Regeln (Rules und Triggers) auch schreibfähig sein können (Updatable Views)
- Trigger, Funktionen und gespeicherte Prozeduren (stored procedures) sind in verschiedenen Sprachen möglich: PL/pgSQL, PL/c, PL/Tcl, PL/Python, PL/Perl, PL/Java, PL/PHP, PL/Ruby, PL/R, PL/sh, PL/Scheme, PL/Parrot, PL/V8 (derzeit noch experimentell)
- Schnittstellen zu vielen Programmiersprachen, unter anderem C, C++, Object Pascal, Java/JDBC, Tcl, PHP, Perl, Python, Ruby, Xojo sowie zu ODBC und .Net-Framework
- Lauffähig auf vielen Unix-Plattformen, von Version 8.0 an auch nativ unter Microsoft Windows
- Export und Import sowohl von Daten als auch von Datenbankstrukturen (Schemata)
- Erweiterbarkeit durch Funktionen, selbstdefinierbare Datentypen und Operatoren
- Asynchrone und synchrone Replikation
- Der Vorteil der synchronen Replikation liegt in der Sicherstellung, dass die Transaktion mindestens auf zwei Servern tatsächlich ausgeführt wurde, womit eine vollständige Sicherung jederzeit garantiert werden kann (Hot Standby)
- Diese Ausfallsicherheit wird naturgemäß durch eine längere Wartezeit auf das Commit erkauft
- Daher gibt es auch die Möglichkeit, besonders wichtige Geschäftsprozesse wie finanzielle Transaktionen synchron zu replizieren, und bei weniger wichtigen Transaktionen, wie der Aufzeichnung der Benutzerinteraktionen, die sehr viel schnellere asynchrone Replikation zu nutzen
Erweiterungen
Eine Reihe von durch den Benutzer zu installierenden Zusatzmodulen steht zur Verfügung, darunter mit GiST (Generalized Search Tree) eine universelle Schnittstelle, um Such- und Sortierverfahren in weiten Grenzen selbst definieren zu können
- Eine Anwendung davon ist PostGIS, das geografische Objekte und Datenstrukturen verwalten und damit als Datenbank für Geoinformationssysteme (GIS) dienen kann
- Eine andere GiST-Anwendung ist OpenFTS (Open Source Full Text Search), das Volltextrecherche in DB-Objekten erlaubt
Eine Reihe von Erweiterungen beschäftigt sich mit Clustering und Replizierung, dem parallelen Einsatz und Abgleich verteilter DB-Server
Viele Erweiterungen bieten zusätzliche Datentypen an, beispielsweise solche für IBANs, ISBNs, EANs
- Einige Erweiterungen sind im Lieferumfang des Projekts bereits enthalten und brauchen lediglich für die jeweilige Datenbank (nicht den Server an sich) aktiviert zu werden
Grenzwerte
In diesem Abschnitt werden einige Beschränkungen einer älteren Version beschrieben
- Da inzwischen neuere Releases bereitgestellt wurden, könnten einige davon weggefallen sein
Die hier beschriebenen Beschränkungen betreffen die Versionen 8.4 bis 9.5
- maximale Größe der Datenbank: unbeschränkt
- maximale Größe einer Tabelle: 32 TB
- maximale Größe eines Datensatzes: 1,6 TB
- maximale Größe einer Zelle: 1 GB
- maximale Anzahl Zeilen pro Tabelle: unbeschränkt
- VARCHAR- und TEXT-Spalten können nicht größer als 1 GB sein
- Die maximale Anzahl der Spalten pro Tabelle ist abhängig von den verwendeten Datentypen und liegt zwischen 250 und 1600
Upgrade der Datenbank
Jede Nebenversionsnummer wird von der PostgreSQL-Entwickler-Community fünf Jahre lang weitergepflegt
- Revisionen enthalten Leistungsverbesserungen und Fehlerbereinigungen, aber niemals neue Funktionen
- Die älteste derzeit (Stand 11/2023) noch gepflegte Versionslinie ist 11, die im Oktober 2018 erschien
Bei einer Software-Aktualisierung müssen bestehende Datenbanken vorher gesichert, danach in der neuen PostgreSQL-Version neu angelegt und die Daten aus der vorherigen Sicherung eingespielt werden
- Dies ist dann erforderlich, wenn sich erste Stelle der Versionsnummer geändert hat, nicht jedoch bei Änderungen der zweiten Stelle
Alle noch unterstützten Versionen liefern ein Werkzeug namens pg_upgrade mit, welches das Datenverzeichnis ohne das vorher notwendige Sichern und Wiedereinspielen der Datenbank aktualisieren kann
Nach einem Import größerer Datenmengen in eine Datenbank sollte der Befehl „ANALYZE
“ ausgeführt werden, damit die Analyse Tabelle „pg_statistics“ richtig befüllt wird
- Unterbleibt diese Analyse, kann dies zu Performanzproblemen führen
Ansonsten wird dies, genau wie das Kommando „VACUUM
“ zur Freigabe von Speicherplatz (eine Art Garbage Collection) in regelmäßigen Abständen automatisch durchgeführt
Softwarewerkzeuge
PostgreSQL selbst läuft als Hintergrundprozess und kann auf verschiedene Weise interaktiv bedient werden Für die kommandozeilenorientierte Bedienung und in Scripts wird die Konsolenanwendung psql mit der Installation mitgeliefert
- Programme mit grafischer Benutzeroberfläche zur Bedienung und Verwaltung der Datenbank werden auf dem Serverrechner meist nicht installiert, sondern auf Clientrechnern: freie Produkte sind etwa PgAdmin Daneben werden eine Vielzahl von kommerziellen Werkzeugen angeboten, die auch grafische CASE-Modellierung, Im- und Export-Funktionen oder DB-Monitoring bieten
Ein MySQL-Migrationshilfswerkzeug ist in jedem freien PostgreSQL-Downloadpaket von EnterpriseDB enthalten
- Für viele andere Datenbanksysteme gibt es Migrationsunterstützung, insbesondere für Umsteiger von Oracle
- pgtune
Ein wichtiges Werkzeug zur Konfiguration der Datenbank ist das Python Script „pgtune“
- Die Standardeinstellungen der Datenbank sind oftmals nicht auf die verwendete Hardware angepasst, sondern so eingestellt, dass das System auf quasi jedem Rechner startet. „pgtune“ zeigt Lösungsvorschläge auf, wie man die Datenbank „tunen“ kann, um die Leistung der Datenbank deutlich zu steigern
- Es gibt ein Online Tool um die wichtigsten Einstellungen der Datenbank zu ermitteln
- Anfänger tun sich oftmals schwer, die geeigneten Konfigurationsparameter zu ermitteln
- Das Tool wurde ursprünglich von Greg Smith (2ndQuadrant, mittlerweile EnterpriseDB) entwickelt
Anhang
Siehe auch
Dokumentation
Man-Page
Info-Pages
Links
Projekt
- www.postgresql.org – offizielle Webpräsenz (englisch)
- www.postgres.de – deutsche Website betreffs PostgreSQL
Weblinks
- https://de.wikipedia.org/wiki/PostgreSQL
- https://wiki.postgresql.org/wiki/Apt
- Postgres.fm, eine Podcastserie zum Thema PostgreSQL
- Werkzeuge und Erläuterungen
- PGXN (englisch) – PostgreSQL Extension Network
- Vortrag vom Chaos Computer Club Ulm: PostgreSQL – Ein Elephant vergisst nie (Video, Audio)
- Podcast: /dev/radio zu PostgreSQL
- FAQ auf sql-info.de