PostgreSQL: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 77: Zeile 77:
 
* http://mherman.org/blog/2016/03/13/designing-a-restful-api-with-node-and-postgres/
 
* http://mherman.org/blog/2016/03/13/designing-a-restful-api-with-node-and-postgres/
 
* [https://node-postgres.com/guides/project-structure Projektstrukturvorschlag bei Nutzung von PostgreSQL mit Node.js]
 
* [https://node-postgres.com/guides/project-structure Projektstrukturvorschlag bei Nutzung von PostgreSQL mit Node.js]
 +
 +
=== Automatischer Worker ===
 +
 +
Mit Hilfe von [https://worker.graphile.org/docs/cli#quickstart Graphile Worker] kann ein [[Node.js]]-Task durch ein PostgresSQL-Befehl asynchron angestoßen werden.
  
 
== Fensterfunktionen in PostgresSQL ==
 
== Fensterfunktionen in PostgresSQL ==
Zeile 86: Zeile 90:
 
* [https://stackoverflow.com/questions/43831286/postgres-fifo-query-calculate-profit-margin Window Functions um ein FIFO-System in der Datenbank zu erstellen] - Stackoverflow-Code ohne Erläuterung; die dort genannte Lösung dürfte nicht sehr gut skalieren, weil - zumindest als Zwischenergebnis - jedes einzelne Stück angeschaut wird (für 10000 in vier Lieferungen heraus- und hereingenommene Stücke entstehen dadurch mindestens 10000 Datensätze).
 
* [https://stackoverflow.com/questions/43831286/postgres-fifo-query-calculate-profit-margin Window Functions um ein FIFO-System in der Datenbank zu erstellen] - Stackoverflow-Code ohne Erläuterung; die dort genannte Lösung dürfte nicht sehr gut skalieren, weil - zumindest als Zwischenergebnis - jedes einzelne Stück angeschaut wird (für 10000 in vier Lieferungen heraus- und hereingenommene Stücke entstehen dadurch mindestens 10000 Datensätze).
  
== Rest-API mit Postgres ==
+
== API-Zugriff auf Postgres ==
 +
=== Rest-API mit Postgres ===
  
 
Siehe
 
Siehe
Zeile 94: Zeile 99:
 
** https://dev.to/eminetto/accessing-postgres-via-rest-using-prest-4fdk
 
** https://dev.to/eminetto/accessing-postgres-via-rest-using-prest-4fdk
 
* [[Supabase]]
 
* [[Supabase]]
 +
 +
=== GraphQL-Zugriff auf Postgres ===
 +
 +
Viele Tools unterstützen den Zugriff per [[GraphQL]] auf Postgres:
 +
* https://postgraphile.org/
 +
* [https://hasura.io/ Hasura] - ein Open Source Layer, der Abfragen in GraphQL auf eine Postgres-Datenbank übersetzt.
 +
 
------
 
------
 
<references/>
 
<references/>
 
[[Category:Datenbank]]
 
[[Category:Datenbank]]
 
[[Category:ServerSoftware]]
 
[[Category:ServerSoftware]]

Aktuelle Version vom 7. Mai 2026, 14:30 Uhr

PostgreSQL ist eine weit verbreitete feature-reiche SQL-Datenbank, einigermaßen vergleichbar mit MySQL.

Installation und Konfiguration

Die Debian-Pakete sehen getrennte Konfigurations- und Datenverzeichnisse vor. Siehe https://wiki.debian.org/PostgreSql .

Siehe zu ersten Schritten mit Postgres auch:

User anlegen

Man wählt sich als User postgres in seine Datenbank DATABASE ein:

 sudo -u postgres psql DATABASE

Dann erzeugt man den Nutzer BENUTZER mit folgender Anweisung:

 CREATE USER BENUTZER WITH PASSWORD 'BENUTZERPASSWORT';


Normalerweise akzeptiert PostgreSQL nur die peer-Authentifizierungsmethode über den Linux-User. Falls selbst diese Berechtigung fehlen sollte, muss eine Zeile wie die folgende eingefügt werden:

 local sameuser USER peer 

USER sollte dem Namen des Linux-User entsprechen.

Ggf. muss man noch die Datei /etc/postgresql/9.5/main/pg_hba.conf so anpassen, dass auch eine Einwahl mit Passwort möglich ist. Dazu ist eine Zeile wie die folgende einzutragen:

 local MYDB MYPOSTGRESUSER password

Die Reihenfolge der Zeilen ist wichtig.[1]. Eine Zeile wie

 local   all             all                                     peer

sollte daher hinter anderen local-Anweisungen stehen, die spezifischere Authentifizierungsmethoden wie md5 oder password kennen.

In $HOME/.pgpass kann man zum Verzicht auf die Passworteingabe Zeilen nach dem folgenden Muster einfügen:[2]

 hostname:port:database:username:password

Beispiel

 localhost:*:MYDB:MYPOSTGRESUSER:PASS

Man MUSS den Zugriff auf .pgpass einschränken:

 chmod 0600 ~/.pgpass

Postgres-Version

Um im psql-Client oder in anderen SQL-Verbindungen die Version des Servers auszugeben, verwendet man:

 SELECT version();

Konfigurationsdatei

Um den Ort der Konfigurationsdateien des Postgres-Servers zu finden verwendet man

 sudo -u postgres psql

und folgende Befehle[3]

 SHOW data_directory;
 SHOW config_file;
 SHOW hba_file;

Postgres on Android

PostgresSQL läuft auch auf Android. Dazu benötigt man die App Termux. Siehe

Zeilenbasierte Zugriffsrechte

Row-Level-Security gibt es seit PostgreSQL 9.5. Es ermöglicht Zugriffsrechte auf bestimmte Zeilen für den jeweiligen Nutzer einzuschränken.

Siehe

Node.js-Zugriff auf PostgreSQL

Node.js-Client-Bibliotheken für JavaScript und TypeScript

Siehe

REST-API mit Node.js und PostgreSQL

Siehe

Automatischer Worker

Mit Hilfe von Graphile Worker kann ein Node.js-Task durch ein PostgresSQL-Befehl asynchron angestoßen werden.

Fensterfunktionen in PostgresSQL

Mit sogenannten Fensterfunktionen oder Window Functions können sehr viele Operationen in der Datenbank abgebildet werden, die sonst der Client mit üblicherweise hohem Aufwand programmatisch durchführen musste.

Siehe

API-Zugriff auf Postgres

Rest-API mit Postgres

Siehe

GraphQL-Zugriff auf Postgres

Viele Tools unterstützen den Zugriff per GraphQL auf Postgres: