PostgreSQL

GISWiki - Das freie Portal für Geoinformatik (GIS)
Version vom 21. Juni 2008, 23:30 Uhr von HeinzJ (Diskussion | Beiträge) (Skript)

(Unterschied) ← Nächstältere Version | Aktuelle Version ansehen (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

PostgreSQL ist eines der ältesten und am weitesten fortgeschrittenen objektrelationalen Datenbankverwaltungssysteme (ORDBMS) im Bereich der freien Software. Mit PostGIS wird PostgreSQL um geografische Objekte erweitert.

PostgreSQL ist weitgehend konform mit dem SQL92/SQL99-Standard, d.h. alle in dem Standard geforderten Funktionen stehen zur Verfügung und verhalten sich so, wie vom Standard gefordert; dies ist bei manchen kommerziellen oder nichtkommerziellen SQL-Datenbanken bisweilen nicht gegeben.

Wichtige Eigenschaften von PostgreSQL sind:

umfassendes Transaktionskonzept, komplexe Abfragen mit Unterabfragen (Subselects), auch geschachtelt, Mengenoperationen, Views, die mit Hilfe von Regeln auch schreibfähig sein können, Trigger und gespeicherte Prozeduren (stored procedures) in verschiedenen Sprachen, referentielle Integrität (u. a. Constraints, Fremdschlüssel), Schnittstellen zu vielen Programmiersprachen, lauffähig auf vielen Unix-Plattformen, geringe Systembelastung und hohe Geschwindigkeit, problemloser Export und Import sowohl von Daten als auch von Datenbankstrukturen (Schemas)

Geschichte

PostgreSQL, auch einmal bekannt unter dem Namen Postgres95, entstand aus einer Datenbankentwicklung der University of California in Berkeley. Das Berkley-Projekt INGRES nahm 1986 seinen Anfang, und die erste Demonstration fand auf der ACM-SIGMOD Conference 1988 statt.

Im Jahre 1994 wurde POSTGRES um einen SQL-Interpreter erweitert und die Software als Open Source unter dem Namen Postgres95 freigegeben. Im Zuge der Entwicklung des World Wide Web und von GNU/Linux verstärkte sich das Interesse an Datenbanken und die Entwicklung von PostgreSQL wurde 1996 verstärkt angegangen mit dem Wechsel auf den heutigen Namen.

Erweiterungen

Mit PostGIS wird PostgreSQL um geografische Objekte erweitert. PostgreSQL ist damit neben proprietären Produkten in der Lage, als Datenbank für GIS (Geoinformationssysteme) zu dienen.

Installationsskript

Entsprechende Hinweise zur Installation finden sich auf der PostgresSQL-Homepage (http://www.postgresql.org/docs).


Das Compilierungs-/Installationsskript wurde mit folgenden Systemvoraussetzungen verwendet.

  • Betriebsystem  : SuSE Linux 10.3
  • Postgres Version  : 8.3.3

Voraussetzungen

Folgende Bibliotheken/Programme müssen installiert sein

  • GNU make (gmake)
  • ISO/ANSI C compiler (gcc)
  • Tar
  • GNU Readline libary
  • Zlib compression library

Siehe auch http://www.postgresql.org/docs/8.3/static/install-short.htm

Skript

#!/bin/bash
echo ============================================================================================
echo "Installationscript PostgreSQL 8.3.3 - PostgreSQL 8.3.3 Installationskript " 
echo ============================================================================================
 
echo ""
echo "Variables"
echo "--------------------------------------------------------------------------------------------"
WGET_PGSQL_FILENAME=postgresql-8.3.3
WGET_EXT=.tar.gz
WGET_PGSQL_PATH=http://ftp.de.postgresql.org/mirror/postgresql//source/v8.3.3/$WGET_PGSQL_FILENAME$WGET_EXT
DIR_BASE=/usr/local/src
SUBDIR_DOWNLOAD=pgsql
DIR_DOWNLOAD=$DIR_BASE/$SUBDIR_DOWNLOAD
DIR_EXTRACT=$DIR_DOWNLOAD/$WGET_PGSQL_FILENAME
 
echo "WGET_PGSQL_FILENAME : "$WGET_PGSQL_FILENAME
echo "WGET_EXT            : "$WGET_EXT
echo "WGET_PGSQL_PATH     : "$WGET_PGSQL_PATH
echo "DIR_BASE            : "$DIR_BASE
echo "SUBDIR_DOWNLOAD     : "$SUBDIR_DOWNLOAD  
echo "DIR_DOWNLOAD        : "$DIR_DOWNLOAD
echo "DIR_EXTRACT         : "$DIR_EXTRACT
 
echo ""
echo "Prepare directories"
echo "--------------------------------------------------------------------------------------------"
cd $DIR_BASE
if [ ! -d $SUBDIR_DOWNLOAD ]; then 
	mkdir $SUBDIR_DOWNLOAD ; 
else
	echo "Directory for installation ["$SUBDIR_DOWNLOAD"] allready exists";
fi
echo "change to directory" 
cd $SUBDIR_DOWNLOAD
 
echo ""
echo "Download PostgreSQL file "
echo "--------------------------------------------------------------------------------------------"
echo "From: "$WGET_PGSQL_PATH
echo "To "$DIR_DOWNLOAD$WGET_PGSQL_FILENAME$WGET_EXT
if [ ! -f $WGET_PGSQL_FILENAME$WGET_EXT ]; then 
	wget $WGET_PGSQL_PATH; 
else
	echo "Downloaddirectory ["$WGET_PGSQL_PATH"] allready exists.";
	echo "Download canceled (assuming allready done)";
fi
 
echo ""
echo "Extract content to "$WGET_PGSQL_FILENAME 
echo "--------------------------------------------------------------------------------------------"
if [ ! -d $WGET_PGSQL_FILENAME ]; then 
	tar xvf $WGET_PGSQL_FILENAME$WGET_EXT; 
else
	echo "Directory ["$WGET_PGSQL_FILENAME"] allready exists"; 
	echo "Extraction canceled (assuming allready done)";
fi
 
echo ""
echo "Change to directory "$WGET_PGSQL_FILENAME
echo "---------------------------------------------------------------------------------------------"
cd $WGET_PGSQL_FILENAME
echo "File operations finished"
 
echo ""
echo "install see -> http://www.postgresql.org/docs/8.3/static/install-short.html"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to continue configure"
read tmp 
 
./configure
 
 
echo ""
echo "configure fini
shed"
echo "gmake"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to continue to gmake"
read tmp 
gmake
 
 
echo ""
echo "gmake finished"
echo "gmake install"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to continue to gmake install"
read tmp 
#su
gmake install
 
echo ""
echo "'gmake install' finished"
echo "adduser postgres"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to continue to adduser postgres"
read tmp 
useradd postgres
 
 
echo ""
echo "adduser postgresl finished"
echo "create postgres directories"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to create postgres directories"
read tmp 
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
mkdir /var/lib/pgsql
chown postgres /var/lib/pgsql
 
 
echo ""
echo "create postgres directories finished"
echo "run tests"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to run tests"
read tmp 
 
su - postgres
 
echo ""
echo "create postgres directories finished"
echo "initdb -D /usr/local/pgsql/data"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to run initdb"
read tmp 
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
 
echo ""
echo "initdb finished"
echo "logfile"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to run /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &"
read tmp 
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
 
echo ""
echo "logfile finished"
echo "createdb test"
echo "---------------------------------------------------------------------------------------------"
echo "Press return to run createdb test step 1"
read tmp 
/usr/local/pgsql/bin/createdb test
echo "Press return to run createdb test step 2"
read tmp 
/usr/local/pgsql/bin/psql test

Konfiguration (Post-Setup)

  • Um angenehm auf die Postgres Befehle zugreifen zu können, sollte man folgende Zeilen in die /etc/profile.local (SuSE spezifisch) eintragen
 PATH=/usr/local/pgsql/bin:$PATH
 export PATH
 MANPATH=/usr/local/pgsql/man:$MANPATH
 export MANPATH

Mit diesen Einstellungen werden die Befehle in den Systempfad aufgenommen und die Manpages dem System bekannt gegeben.

Links