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:

</p>
<pre># poldek

</pre></div>

</p>

Wykonujemy:


</p>
<pre>poldek&gt;ls -l postgresql-*

</pre></div>

</p>

Przykładowy wynik to:

</p>
			<p align="left"><table bgcolor="#ffffff" cellspacing="2" cellpadding="5"><tr><td>
<pre>poldek&gt; 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&gt;

</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># poldek -i postgresql-module-plpgsql

</pre></div>

</p>

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>PG_DB_CLUSTERS="/var/lib/pgsql"

</pre></div>

</p></p>
<h3>Sortowanie po polsku</h3>

	

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

TODO: locale tylko dla PostgreSQLa.

<h3>Inicjalizacja</h3>
	
	<p>

	Wykonujemy polecenie:
	</p>

```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.

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

</p>

```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`.

<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).

</p>
<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>
	<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>

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.