Bazy danych

PostgreSQL

  • 2011-07-26 11:58
  • 1 komentarz
  • 891 odsłon
  • Oceń ten tekst jako pierwszy
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:
                               

<pre># poldek
</pre></div>
</p>
                               

Wykonujemy:


                               

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

Przykładowy wynik to:



                               

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


                               

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

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

                            
                               

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

oraz



                               

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

Konfiguracja PostgreSQLa w PLD


               
               

Wstępna konfiguracja


                       
               


                        Edytujemy plik /etc/sysconfig/postgresql:
               


               

<pre># vim /etc/sysconfig/postgresql
</pre></div>
</p>

               


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


               

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

powinno dać wynik:


               

<pre>PG_DB_CLUSTERS="/var/lib/pgsql"
</pre></div>
</p>
       
       

Sortowanie po polsku


               

<pre>poldek -i localedb-src &amp;&amp; localedb-gen -l pl_PL &amp;&amp; echo LANG=pl_PL \
    &gt;&gt;/etc/sysconfig/i18n
</pre></div>
</p>

TODO: locale tylko dla PostgreSQLa.



       
       

Inicjalizacja


               
               



                Wykonujemy polecenie:
               


<pre># service postgresql init
</pre></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) (&lt;- 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}:
               



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


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


       
       

Uruchomienie PostgreSQLa


               
               

<pre># service postgresql START
</pre></div>
</p>

       
       

Dodanie użytkownika


               
               

<pre># su - postgres -c 'psql template1'
template1=# CREATE USER uzytkownik WITH ENCRYPTED PASSWORD 'hasło' \
    CREATEUSER CREATEDB;
CREATE USER
</pre></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


               
               

<pre>$ psql -h 127.0.0.1 template1
template-1=# SELECT COUNT(*) FROM pg_database;
 COUNT 
-------
     2
(1 ROW)
</pre></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.
               



               

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


        Źródło

1 komentarz

Szczawik 2006-10-05 17:11

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