Document

Werbung
PostgreSQL
Kai Benjamins
Thorsten Jens
Holger Kaßner
Fachhochschule Oldenburg/Ostfriesland/Wilhelmshaven
Seite 1 / 19
Überblick
●
Was ist PostgreSQL
●
Funktionalität
●
Vergleich mit Oracle
●
Anbindungsmöglichkeiten
●
Administrationstools
Seite 2 / 19
Geschichte von PostgreSQL
●
●
Entwickelt an der University of California in
Berkeley
–
Ingres (1977 – 1985), relational
–
Postgres (1986 – 1994), objektrelational
Erweiterung um SQL-Funktionalität
–
●
Postgres95 (1994 – 1995)
ab 1996 weltweites Entwicklerteam
–
Umbenennung in PostgreSQL
Seite 3 / 19
Technische Merkmale
●
objektrelationales DBMS
–
benutzerdefinierte Operatoren, Datentypen und
Funktionen; Vererbung
●
SQL92 (teilweise SQL99)
●
Unterabfragen, Transaktionen
●
Trigger
●
Schnittstellen:
–
C, C++, Java, Perl, PHP, Python, Lisp, ...
Seite 4 / 19
Benutzerdefinierte Funktionen
●
laufen innerhalb der Datenbank (serverseitig)
●
Aufruf in SQL-Ausdrücken
●
unterstützte Sprachen:
–
SQL, PL/pgSQL, PL/Tcl, PL/Perl, C, ...
Seite 5 / 19
Benutzerdefinierte Funktionen
●
Beispiel mit SQL
–
●
●
Berechnung der Kreisfläche
CREATE FUNCTION kreisflaeche(float)
RETURNS float
AS 'SELECT pi() * sqrt($1);'
LANGUAGE 'sql';
SELECT kreisflaeche(10);
Seite 6 / 19
SQL
●
●
Datentypen: SQL92 / SQL99 + Eigene
–
Netzwerkadressen
–
geometrische Typen, ...
SQL: Alles, was man möchte
–
Transaktionen
–
Views
–
Referentielle Integrität
–
Joins, ...
Seite 7 / 19
SQL
●
Reguläre Ausdrücke statt LIKE
–
●
SELECT * FROM kfzs WHERE kennzeichen ~*
'^(emd|aur)-.*[0-8]$'
Rules
–
modifizieren SQL-Ausdrücke
–
CREATE RULE foo AS ON INSERT TO bar DO
INSTEAD NOTHING -- readonly-Tabelle
–
ermöglichen INSERT in komplexe Views
Seite 8 / 19
Begrenzungen von PostgreSQL
maximale Größe der Datenbank
maximale Größe einer Tabelle
maximale Größe einer Zeile
maximale Größe einer Spalte
maximale Zeilenanzahl
maximale Spaltenanzahl
unbegrenzt
64 TB
unbegrenzt
1 GB
unbegrenzt
1600
Seite 9 / 19
Vergleich mit Oracle
ACID
Verteilte DB
Open Source
Preis
Plattformen
Sprachen Server
alle SQL92 Typen
PostgreSQL 7
X
X
0$
17
7
X
Oracle 8
X
X
CPU · MHz · 15$
5
2
Seite 10 / 19
PHP
●
●
●
$conn = pg_Connect("host=localhost
port=5432 dbname=budget user=postgres
password=***");
$res = pg_Exec($conn, "SELECT * FROM
kostenstellen;");
$value = pg_Result($res, $row, $col);
Seite 11 / 19
Perl
●
●
●
●
use Pg;
$conn = Pg::connectdb("host=localhost
port=5432 dbname=budget user=postgres
password=***");
$res = $conn->exec("SELECT * FROM
kostenstellen");
$value = $res->getvalue($row, $col);
Seite 12 / 19
Java
●
●
●
●
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/
budget", "postgres", "***");
stmt = conn.createStatement();
res = stmt.executeQuery( "SELECT * FROM
kostenstellen;");
Seite 13 / 19
C / C++
●
include "libpq-fe.h"
●
PGConn *conn, PGresult *res, char *value;
●
●
●
conn = PQconnectdb("host=localhost
port=5432 dbname=budget user=postgres
password=***");
res = PQexec(conn, "SELECT * FROM
kostenstellen");
value = PQgetvalue(res, row, col);
Seite 14 / 19
Administrationstools
●
PG Admin
●
PG Access
Seite 15 / 19
PG Admin
●
●
●
●
graphisches Datenbankwerkzeug unter
Windows
übersichtlicher Blick auf alle Datenbanken im
DBMS
Migration von z.B. Access- bzw. ODBCDatenbanken
sonstige Datenmanipulation
Seite 16 / 19
PG Access
●
●
plattformunabhängiges graphisches
Datenbankwerkzeug in Tcl/Tk
Zugriff auf
–
Tabellen
–
Sichten
–
Reports, usw.
●
Im- und Export von Tabellen
●
sonstige Datenmanipulation
Seite 17 / 19
Demonstration
Seite 18 / 19
http://postgresql.thodi.de
Seite 19 / 19
Herunterladen