Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Usługi dostępne w PLD
PostgreSQL - Baza danych SQL
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
HTML (jeden plik)
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

PostgreSQL - Baza danych SQL

<- ->
 

Co to jest PostgreSQL

PostgreSQL : The most advanced Open Source database system in the world

PostgreSQL: Najbardziej zaawansowany system zarządzania bazą danych na świecie typu OpenSource - w taki oto sposób grupa rozwijająca SZBD PostgreSQL reklamuje swój produkt. SZBD PostgreSQL jest implementacją języka SQL, która zawiera w sobie bardzo wiele jego elementów, a na dodatek wprowadza wiele własnych rozszerzeń. Porównywany z mySQL oddaje mu pola przy małych instalacjach, które w prosty, a szybki sposób mają obsługiwać bazę danych - typu małe portale internetowe, proste bazy, i tym podobne. Jednakże SZBD PostgreSQL dostaje skrzydeł w większych projektach, jest często porównywany do bardzo rozbudowanego SZBD Oracle. Cechy SZBD PostgreSQL to między innymi:

  • osadzane języki proceduralne wykonywane przez bazę danych (plperl, pl/perlu, plpgsql, plpython, pltcl, pl/tcl)

  • możliwość tworzenia funkcji w PostgreSQLu w języku C, kompilowanych do bibliotek dynamicznych

  • sterowniki dostępu do bazy z języków C, C++, python, perl, czy Java (poprzez JDBC), ODBC

  • wysoce zaawansowana implementacja standardu SQL, obejmująca SQL/92

  • obsługa BLOB (Binary Large OBjects) -- dużych obiektów binarnych, takich jak pliki graficzne, itp.

  • obsługa pól typu AUTOINCREMENT jako SERIAL lub SEQUENCE

  • licencję BSD, która umożliwia zamykanie kodu SZBD PostgreSQL przy dokonywaniu modyfikacji, co jest istotne w rozwiązaniach biznesowych

Instalacja pakietów

Uruchamiamy program poldek:

# poldek

Wykonujemy:

poldek>ls -l postgresql-*

Przykładowy wynik to:

poldek> ls -l postgresql-*
package                                build date                 size
postgresql-7.4-0.8                     2003/12/16 20:45        8.8 MB
postgresql-backend-devel-7.4-0.8       2003/12/16 20:45        1.4 MB
postgresql-clients-7.4-0.8             2003/12/16 20:45        1.5 MB
postgresql-devel-7.4-0.8               2003/12/16 20:45       93.0 KB
postgresql-doc-7.4-0.8                 2003/12/16 20:45        5.3 MB
postgresql-ecpg-7.4-0.8                2003/12/16 20:45      479.0 KB
postgresql-ecpg-devel-7.4-0.8          2003/12/16 20:45       17.0 KB
postgresql-libs-7.4-0.8                2003/12/16 20:45      252.0 KB
postgresql-module-pgcrypto-7.4-0.8     2003/12/16 20:45       91.0 KB
postgresql-module-plperl-7.4-0.8       2003/12/16 20:45       30.0 KB
postgresql-module-plpgsql-7.4-0.8      2003/12/16 20:45      100.0 KB
postgresql-module-plpython-7.4-0.8     2003/12/16 20:45       35.0 KB
postgresql-module-pltcl-7.4-0.8        2003/12/16 20:45       44.0 KB
postgresql-static-7.4-0.8              2003/12/16 20:45      303.0 KB
postgresql-tcl-7.4-0.8                 2003/12/16 20:45       38.0 KB
postgresql-tcl-devel-7.4-0.8           2003/12/16 20:45        0.0 KB
postgresql-tcl-static-7.4-0.8          2003/12/16 20:45       36.0 KB
17 packages, 18.6 MB
poldek>

Do poprawnego działania SZBD PostgreSQL konieczne są następujące pakiety:

  • postgresql

  • postgresql-clients

  • postgresql-libs

Zatem można przystąpić do ich instalacji, wpisując następujące polecenie:

# poldek -i postgresql postgresql-clients postgresql-libs

Aby SZBD PostgreSQL skorzystał z wewnętrznych języków plpgsql czy też plphpython należy doinstalować pakiety postgresql-module-plpgsql

# poldek -i postgresql-module-plpgsql

oraz

root# poldek -i postgresql-module-plpython

Konfiguracja PostgreSQLa w PLD

Wstępna konfiguracja

Edytujemy plik /etc/sysconfig/postgresql:

# vim /etc/sysconfig/postgresql

I wybieramy odopowiednie podejście do bazy danych. Polecam standard setting. Po edycji wykonanie komendy

# grep PG_DB_CLUSTERS /etc/sysconfig/postgresql | egrep -v ^#

powinno dać wynik:

PG_DB_CLUSTERS="/var/lib/pgsql"

Sortowanie po polsku

poldek -i localedb-src && localedb-gen -l pl_PL && echo LANG=pl_PL \
    >>/etc/sysconfig/i18n

TODO: locale tylko dla PostgreSQLa.

Inicjalizacja

Wykonujemy polecenie:

# service postgresql init

Podczas inicjalizacji SZBD PostgreSQL stworzy pliki potrzebne mu do przechowywania tabel, tabele systemowe jak i bazy danych template0 i template1 konieczne do jego dalszego działania. Inicjalizacja PostgreSQLa nie jest równoznaczna z jego uruchomieniem, o czym dalej.

Konfiguracja PostgreSQLa

W punkcie (3) (<- TODO, shufla docbook lame) został zainicjalizowany cluster, w którym to można dodawać bazy danych. Trzeba teraz odpowiednio skonfigurować tenże cluster. Przyda się edycja plików ${PG_DB_CLUSTERS}/{postgresql.conf,pg_hba.conf}:

# vim /var/lib/pgsql/{postgresql.conf,pg_hba.conf}

Przydatna opcja to tcpip_socket = true w pliku /var/lib/pgsql/postgresql.conf.

Uruchomienie PostgreSQLa

# service postgresql start

Dodanie użytkownika

# su - postgres -c 'psql template1'
template1=# CREATE USER uzytkownik WITH ENCRYPTED PASSWORD 'hasło' \
    CREATEUSER CREATEDB;
CREATE USER

Użytkownik `uzytkownik' będzie miał możliwość tworzenia baz danych (za pomocą createdb lub CREATE DATABASE z poziomu psql) jak i dodawania użytkowników (createuser lub CREATE USER z poziomu psql).

Ostatni test

$ psql -h 127.0.0.1 template1
template-1=# SELECT count(*) FROM pg_database;
 count 
-------
     2
(1 row)

Dodatki

Warto włączyć obsługę PostgreSQLa w PHP, instalując pakiet php-pgsql, również w perl-u perl-DBD-Pg lub perl-Pg, oraz w python-ie python-postgresql. Pakiet postgresql-devel jest przydatny przy pisaniu aplikacji w C/C++ korzystających z PostgreSQLa. Dokumentacja do PostgreSQLa znajduje się, a jakże, w pakiecie postgresql-doc.

# poldek -i php-pgsql
# poldek -i perl-DBD-Pg
# poldek -i perl-Pg
# poldek -i python-postgresql
# poldek -i postgresql-devel
# poldek -i postgresql-doc

Odnośniki

 
&lt;- ->