PostgreSQL: Ein kleiner Einstieg
PostgreSQL: Schon oft davon gehört, aber bislang nie selbst genutzt. Was für andere in meiner Branche selbstverständlich zu sein scheint, war für mich bisher ein Buch mit sieben Siegeln. Zeit zum Aufholen! Dies ist ein kleiner Write-Up aus meinen Recherchenotizen.
PostgreSQL (Software)
PostreSQL ist eine Open-Source objekt-relationale Datenbankmanagementsystem (ORDBMS). Es unterstützt einen Großteil des SQL-Standards. PostgreSQL verwendet ein client/server model. Eine PostgreSQL session besteht aus den folgenden Prozessen:
- Ein Serverprozess, welcher die Datenbank verwaltet, Verbindungsanfragen von Clients annimmt und Datenbankoperationen für den Client ausführt. Dieser Serverprozess heißt
postgres
. - Ein Clientprozess (das frontend), der Datenbankoperationen ausführen will. Clients können verschiedene Formen annehmen: Textorientierte Tools, eine graphische Anwendung, ein Webserver oder Datenbank-Wartungsprozesse.
Client und Server können auf verschiedenen Hosts laufen - in dem Fall kommunizieren sie über das Netzwerk via TCP/IP. Ein PostgreSQL server kann mehrere Clients gleichzeitig bedienen.
Nachdem PostgreSQL installiert ist, kann man über das Terminal mit dem Server kommunizieren, z.B. über createdb
, dropdb
, oder psql
. Hilfreiche GUI-Tools sind u.A.:
dpage/pgadmin4
(docker)
Setup
Via Docker:
1
2
docker pull postgres:latest
docker run --name my-postgres-database -e POSTGRES_PASSWORD=mypassword -d postgres
Docker-compose:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: example
volumes:
- pgdata:/var/lib/postgresql/data
expose:
- 5432
volumes:
pgdata:
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Weitere relevante Environmentvariablen. Diese sind in einem .env
-file anzulegen.
POSTGRES_USER
- Setzt einen Superuser und eine gleichnamige Datenbank.POSTGRES_DB
- Name der Datenbank, defaultPOSTGRES_USER
.POSTGRES_INITDB_ARGS
- Sendet Argumente zupostgres_initdb
POSTGRES_INITDB_WALDIR
- Pfad zum Postgres transaction log.POSTGRES_HOST_AUTH_METHOD
- Bestimmt dieautho-method
fürhost
Verbindungen zuall
Datenbanken, Users und AdressenPGDATA
- Standardpfad für Datenbankdateien.
Benutzung
Sobald PostgreSQL via Docker läuft, lässt sich damit einfach über den Docker daemon zugreifen. psql
ist der Befehl, der die interaktive Postgres-Konsole öffnet.
1
docker exec -it -u postgres some-postgres psql
docker inspect pg_container suche ip adresse tippe ip adresse in host name feld von pgadmin