PostgreSQL

vecco
Ten artykuł wymaga dopracowania!

Jeżeli możesz popraw ten artykuł według zaleceń, które możesz znaleźć na stronie Artykuły do poprawy. Po dopracowaniu tego tekstu można usunąć ten komunikat.

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:
  1. osadzane języki proceduralne wykonywane przez bazę danych (plperl, pl/perlu, plpgsql, plpython, pltcl, pl/tcl)
  2. możliwość tworzenia funkcji w PostgreSQLu w języku C, kompilowanych do bibliotek dynamicznyc
  3. sterowniki dostępu do bazy z języków C, C++, python, perl, czy Java (poprzez JDBC), ODBC
  4. wysoce zaawansowana implementacja standardu SQL, obejmująca SQL/92
  5. obsługa BLOB (Binary Large OBjects) -- dużych obiektów binarnych, takich jak pliki graficzne, itp.
  6. obsługa pól typu AUTOINCREMENT jako SERIAL lub SEQUENCE
  7. 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:

```sql
# poldek
```
</div>
</p>

Wykonujemy:

```sql
poldek>ls -l postgresql-*
```
</div>
</p>

Przykładowy wynik to:

```sql
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>
```
</div>
</p>

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:

```sql
# poldek -i postgresql postgresql-clients postgresql-libs
```
</div>
</p>

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

```sql
# poldek -i postgresql-module-plpgsql
```
</div>
</p>

oraz

```sql
root# poldek -i postgresql-module-plpython
```
</div>
</p>

Konfiguracja PostgreSQLa w PLD

Wstępna konfiguracja

Edytujemy plik `/etc/sysconfig/postgresql`:

```sql
# vim /etc/sysconfig/postgresql
```
</div>
</p>

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

```sql
# grep PG_DB_CLUSTERS /etc/sysconfig/postgresql | egrep -v ^#
```
</div>
</p>

powinno dać wynik:

```sql
PG_DB_CLUSTERS="/var/lib/pgsql"
```
</div>
</p>

Sortowanie po polsku

```sql
poldek -i localedb-src && localedb-gen -l pl_PL && echo LANG=pl_PL \
    >>/etc/sysconfig/i18n
```
</div>
</p>

TODO: locale tylko dla PostgreSQLa.

Inicjalizacja

Wykonujemy polecenie:

```sql
# service postgresql init
```
</div>
</p>

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}:

```sql
# vim /var/lib/pgsql/{postgresql.conf,pg_hba.conf}
```
</div>
</p>

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

Uruchomienie PostgreSQLa

```sql
# service postgresql start
```
</div>
</p>

Dodanie użytkownika

```sql
# su - postgres -c 'psql template1'
template1=# CREATE USER uzytkownik WITH ENCRYPTED PASSWORD 'hasło' \
    CREATEUSER CREATEDB;
CREATE USER
```
</div>
</p>

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

```sql
$ psql -h 127.0.0.1 template1
template-1=# SELECT count(*) FROM pg_database;
 count 
-------
     2
(1 row)
```
</div>
</p>

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.

```sql
# 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
```
</div>
</p>

Źródło

1 komentarz

Jak dla mnie to wstyd przekleić żywcem artykuł i jeszcze nie zadbać o jego formatowanie i w ogóle wygląd po wklejeniu.