PostgreSQL
vecco
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:
-
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 dynamicznyc
-
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:
</p>
</pre></div> |
Wykonujemy:
</p>
</pre></div> |
Przykładowy wynik to:
</p> <p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre>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>
</pre></div></td></tr></table>
Do poprawnego działania SZBD PostgreSQL konieczne są następujące pakiety:
postgresql
postgresql-clients
postgresql-libs
</p>
</ul>
<p>Zatem można przystąpić do ich instalacji, wpisując następujące polecenie:</p>
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre># poldek -i postgresql postgresql-clients postgresql-libs
</pre></div></td></tr></table>
Aby SZBD PostgreSQL skorzystał z wewnętrznych języków plpgsql czy też plphpython należy doinstalować pakiety postgresql-module-plpgsql
</p>
</pre></div> |
oraz
</p> <p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre>root# poldek -i postgresql-module-plpython
</pre></div></td></tr></table>
</p><h3>Konfiguracja PostgreSQLa w PLD</h3>
<h3>Wstępna konfiguracja</h3>
<p>
Edytujemy plik <i>`/etc/sysconfig/postgresql`</i>:
</p>
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre># vim /etc/sysconfig/postgresql
</pre></div></td></tr></table>
</p> <p>
I wybieramy odopowiednie podejście do bazy danych. Polecam standard setting.
Po edycji wykonanie komendy
</p>
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre># grep PG_DB_CLUSTERS /etc/sysconfig/postgresql | egrep -v ^#
</pre></div></td></tr></table>
powinno dać wynik:
</p>
</pre></div> |
<h3>Sortowanie po polsku</h3>
```sql
poldek -i localedb-src && localedb-gen -l pl_PL && echo LANG=pl_PL \ >>/etc/sysconfig/i18n ```</div> |
TODO: locale tylko dla PostgreSQLa.
<h3>Inicjalizacja</h3>
<p>
Wykonujemy polecenie:
</p>
```sql
# service postgresql init ```</div> |
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.
<h3>Konfiguracja PostgreSQLa</h3>
<p>
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> |
Przydatna opcja to `tcpip_socket = true` w pliku `/var/lib/pgsql/postgresql.conf`.
<h3>Uruchomienie PostgreSQLa</h3>
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre># service postgresql start
</pre></div></td></tr></table>
</p><h3>Dodanie użytkownika</h3>
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre># su - postgres -c 'psql template1'
template1=# CREATE USER uzytkownik WITH ENCRYPTED PASSWORD 'hasło' \
CREATEUSER CREATEDB;
CREATE USER
</pre></div></td></tr></table>
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).
<h3>Ostatni test</h3>
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre>$ psql -h 127.0.0.1 template1
template-1=# SELECT count(*) FROM pg_database;
count
-------
2
(1 row)
</pre></div></td></tr></table>
</p><h3>Dodatki</h3>
<p>
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.
<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre># 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
</pre></div></td></tr></table>
Źródło</p>
Jak dla mnie to wstyd przekleić żywcem artykuł i jeszcze nie zadbać o jego formatowanie i w ogóle wygląd po wklejeniu.