Mostanában minden munkám a PostgreSQL körül forog, így sok dukumentáció után kerestem a témában, amikor is egy magyar, leírást találtam, ami bár az alapokat súrolja, de jó nyelvezetű és érhető is, így sok hasznos dolgot tartalmaz. Íme:

Korábbi cikkeinkben a Windows platformot, illetve a MySQL telepítését és beállítási lehetőségeit favorizáltuk igazán. Vannak azonban más lehetőségek is, melyek mellett nem mehetünk el szó nélkül: a legnépszerűbb szerverplatform manapság a Linux, s a PostgreSQL is egy egyre népszerűbb (s a MySQL-nél nagyságrendekkel többet tudó) adatbázisszerver. A mai cikkünkben a PostgreSQL (Debian) Linux alatti telepítéséről, s utána a beállítási lehetőségeiről lesz szó.

Mi az a PostgreSQL?

A PostgreSQL egy BSD licensszel rendelkező, objektum orientált adatbázis kezelő rendszer, így a MySQL-lel ellentétben teljesen szabadon felhasználható. Általában minden UNIX-kompatibilis operációs rendszeren képes működni. A 8.0 előtti verziók Windowsokon a Cygwin környezet segítségével futtathatóak csak, a 8.0 (jelenleg még béta állapotú) PostgreSQL már natív telepítővel rendelkezik.
A PostgreSQL nyílt forráskódú, a teljes kód szabadon hozzáférhető.

Mit tud a PostgeSQL?

Röviden: mindent. Pontosabban minden fontosat, amit egy modern RDBMS-nek tudnia kell. De a legegyszerűbb, ha megnézzük mit mondanak a fejlesztői saját magukról (A magyar PostgreSQL FAQ-ból idézve):

1.14) Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?

Számos nézőpontból lehet vizsgálni a szoftvert: képességek, teljesítmény megbízhatóság, támogatottság és ár.

Képességek

A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek képességeivel: tranzakciók, al-lekérdezések, triggerek, nézetek, külső kulcsok, integritás és kifinoult zármechanizmusok. Van néhány képessége, ami a kereskedelmi adatbázisokból hiányzik, mint például a felhasználó által definiált típusok, öröklődés, szabályok és verziókontroll a zárolási viták redukálásáért.

Teljesítmény

A PostgreSQL teljesítménye hasonlít a kereskedelmi és más nyílt adatbázis szerverekéhez. Lehet bizonyos esetekben lassabb, másokban gyorsabb. A MySQL nevű tanuló RDBMS például gyorsabban hajt végre insert/update műveleteket, mivel a tranzakciókat elsumákolja. Persze a MySQL nem rendelkezik a képességek részben felsoroltak nagy részével. Mi a megbízhatóságra és a képességekre építünk, bár a teljesítmény is nő minden kiadással. Van egy érdekes oldal a MySQL és a PostgreSQL összehasonlításával a http://openacs.org/p…y/why-not-mysql.html címen.

Megbízhatóság

Tudjuk hogy ha egy DBMS nem megbízható, akkor teljesen haszontalan. Igyekszünk jól tesztelt, stabil kódot kiadni, amiben a lehető legkevesebb hiba van. Minden kiadás elött eltellik legalább 1 hónap béta teszt, és a kiadási történet is azt mutatja, hogy stabil kódot adunk ki, ami készen áll a produktív felhasználásra. Úgy gondoljuk, felülmúlunk más adatbázis szoftvereket ezen a téren.

Támogatás

A levelezési listáink kapcsolatot teremtenek a fejlesztők és felhasználók csoportjával, akik segítenek a problémák megoldásában. Bár nem tudjuk garantálni hogy ki tudjuk javítani a hibát, más, kereskedelmi adatbázis cégek sem tudják. A fejlesztő csoport közvetlen elérési lehetősége, a közösség, a dokumentáció és a forráskód gyakran támogatást biztosít, mint más adatbázisoknál. Van kereskedelmi, alkalmi támogatás azoknak, akiknek szüksége van rá (lásd: 1.6).

Ár

A PostgreSQL szabad bármilyen felhasználásra, akár kereskedelmire is. A termékhez hozzáadhatod a saját forráskódjaidat korlátozás nélkül.

Támogatás

A PostgeSQL is rendelkezik, a nagyobb adatbáziskezelő rendszerekhez hasonlatosan, mindenféle meghajtóval (odbc, jdbc, dbi, .net), illetve nagyon sok programozási nyelvhez elérhető hozzá csatlakozási felület (c, c++, python, perl, php, stb). Sok szabad, illetve fizetős termék támogatja: grafikus felületű lekérdező, riport készítő eszközök, stb. Ezen PostgreSQL-hez létező programok információs gyűjtő helye a GBORG, ahol szinte minden feladathoz kínálnak megoldást PG alapokon.

PostgreSQL telepítése

Jelen leírás csak ízelítő akar lenni a PostgeSQL használatához, ezért nem törekszem arra, h. teljes körűen bemutassam a telepítési lépéseket, a Unix verziók, kiadások nagy száma miatt ez nem is lehetséges egy bemutató cikk kapcsán. A konkrét rendszerhez tartozó telepítési lépéseket a megfelelő rendszerhez tartozó telepítési leírásokban lehet megtalálni.

Ebben a cikkben csak a Debian Linux rendszerre való telepítést mutatom be.

A Debian Linux alatt, az intelligens telepítési és csomag kezelési rendszerből adódóan, a telepítés nagyon egyszerű: root felhasználóként az alábbi parancsot kell kiadni:

# apt-get install postgresql

A telepítő ezután felkeresi a beállított Debian szervereket, letölti a csomagokat (a csomagot, és annak függőségeit is), majd lefuttatja az inicializáló szkripteket, melyek beállítják az adatbázis motor futtatásához szükséges könyvtárakat, elkészítik az alap (template) adatbázist, létrehozzák az adatbázis szervert futtató felhasználót, és alap beállításokkal el is indítják a rendszert. Ezután mar csak a környezet finom hangolására van szükség, majd a konkrét adatbázisok, felhasználók létrehozására.

Telepítési lépések

  • az adatbázis helye. Alapértelmezés a /var/lib/postgresql/data.
  • locale beállitása. Alapértelmezés C, ha a rendszer támogatja, de lehet hu_HU.
  • az adatbázisok alapértelmezett kódolása. Az adatbázis létrehozásakor, ha nem adunk meg kódolást, akkor a rendszer ezzel a kódolással hozza létre a db-t. Jó választás lehet a LATIN2 (közép-európai karakter készlet, mely az összes magyar betűt tartalmazza, s ebbe belefér az angol is), vagy a Unicode.
  • a dátum formátum: Európai (nap a hónap előtt) vagy az US formátum (hónap a nap előtt).

Ezután létrejön az adatbázis könyvtár struktúra, az adatbázisok, jogrend, szervert futtató felhasználó (postgres), továbbá a konfigurációs állományok is. A rendszer üzemképes, használatra kész.

Javasolt még a postgresql-doc csomag telepítése is:

# apt-get install postgresql-doc

Beállítások, finomhangolás

Alapértelmezésben a Debian alatt az /etc/postgresql/ könyvtár tartalmazza az adatbázis szever konfigurációs állományait. Ez rendszertől függően eltérő lehet, de a beállítások hasonló módokon végezhetőek el.

postgresql.conf

Ebben az állományban az adatbázis szerver beállításait változtathatjuk meg. Néhány fontosabb paraméter:

tcpip_socket = true

Ez adja meg, hogy a PostgreSQL szerver látszódjon-e az 5432-es (port = 5432) porton, és elérhető legyen-e más gépek számára is. Ha nincs rá szükség, kikapcsolható (javasolt).

max_connections = 100

Itt adható meg, hogy egyszerre hány kapcsolat élhet az adatbázis felé. Értéke függ a gépben lévő memória mennyiségétől.

superuser_reserved_connections = 2

Néhány fenntartott kapcsolat a superuser-nek, azért, hogy akkor is tudjon kapcsolódni, ha a max_connections által beállított limitet már elérte a rendszer.

pg_hba.conf

Ebben az állományban lehet megadni azt, hogy az egyes kliensek honnan, milyen módon kapcsolódhatnak az adatbázishoz. Minden egyes sor egy szabályt állít fel. A sorokban a bejegyzések sorrendje:

TYPE (típus) DATABASE USER IP-ADDRESS IP-MASK METHOD.

A paraméterek elég egyértelműen jelzik, hogy minek kell oda kerülnie. A típus a kapcsolat típusára utal, értéke lehet local, host, hostssl, hostnossl. Beállításunkban csak a local-t használjuk.

METHOD paraméter: itt adható meg a kapcsolódáskor a jelszó ellenőrzési mód. Lehet: trust (mindig beenged feltétel nélkül), reject (mindig elutasít feltétel nélkül), md5, crypt, password, krb5, ident, PAM (Pluggable authentication method, például: LDAP). Mi az md5 módot használjuk.

Egy fontos sor van, ahol az adatbázis adminisztrátor felhasználónak vannak jogok biztosítva.

local    all    postgres        ident sameuser

(A postgres felhasználó lokálisan minden adatbázishoz hozzáfér)

A lokális hozzáférések biztosításához nekünk elég egy sort beszúrni ebbe az állományba:

local    all        all        md5

Ezzel biztosítjuk, hogy egy lokális adatbázis felhasználó, ha tudja az adatbázishoz a jelszót, akkor hozzá is fér.

Alapértelmezésben található az állomány végén még egy sor, amellyel mindenkit kitiltunk, akit eddig nem engedtünk be:

host    all        all        0.0.0.0        0.0.0.0    reject

Ha nincs ott ez a sor, akkor érdemes odarakni.

Az adatbázis szerver elindítása, leállítása

A Debian rendszerben a /etc/init.d/ konyvtárban találhatóak az init szkriptek.

/etc/init.d/postgresql start

A parancs hatására elindul az adatbázis kezelő (alapértelmezésben a boot folyamat során elindul!)

Leállításra az

/etc/init.d/postgresql stop

parancs szolgál, újraindítani

/etc/init.d/postgresql restart

parancs kiadásával lehet.

Figyelem! a pg_hba.conf módosítása után újra kell indítani a rendszert vagy értesítenünk kell erről a szervert: postmaster processznek HUP signalt kell küldjünk (kill parancs), vagy adjuk ki a pg_ctl reload utasítást!

Felhasználó felvitele

Az adatbázis szerver postgres felhasználó jogaival fut telepítés után. Először át kell váltani postgres felhasználóra. Ezt csak a root tudja megtenni:

su - postgres

Ezután: lehet használni a createuser scriptet, bár ezzel nem tudtam a jelszavát beállítani az elkészítendő felhasználónak.

A legegyszerűbb módszer: psql

A PostgreSQL parancssoros kliense a psql. Ezt kell elindítani, és létrehozni egy felhasználót:

$ psql template1

A template1 adatbázis nevet meg kell adni.

Ezután a psql-ben a felhasználó létrehozó parancs:

template1=# CREATE USER dbusername WITH CREATEDB CREATEUSER PASSWORD 'secret';

Ha nem szeretnénk hogy a felhasználó tudjon adatbázist létrehozni, akkor a CREATEDB opciót ki kell hagyni. Ha nem szeretnénk, hogy más adatbázis felhasználókat hozzá tudjon adni a rendszerhez, akkor pedig a CREATEUSER opciót kell kihagyni.

Adatbázis létrehozás, csatlakozás

Ha az adatbázis felhasználót már létrehoztuk (dbusername), akkor az adatbázis létrehozása a következőképpen történhet, parancssorból:

createdb -U dbusername -E UNICODE dbname

A -U után kell az adatbázis felhaszáló nevet megadni. A -E után az adatbázis kódolását. Ha nem adjuk meg, akkor a rendszer alapértelmezett kódolását használja (lásd fenn, a telepítési lépéseknél). Ezután bekéri a dbusername felhasználó jelszavát, és az adatbázis létre jön.

Csatlakozás:

psql -U dbusername dbname paranccsal.

Adatbázis eldobása:

dropdb -U dbusername dbname

Összegzés

A telepítés után a PostgreSQL adatbázis szerver már munkára kész. PHP illesztéshez a php-postgres csomagot kell feltenni (apt-get install php4-pgsql), feltételezve , hogy a PHP a php4 csomagból lett telepítve és nem forrásból. Ha a PHP-t PostgreSQL támogatással akarjuk fordítani akkor a postgresql-dev csomagra is szükségünk lesz.

Egyszerűbb esetben programjainkban a mysql sztringet kell szinte csak pgsql-re módosítani (PEAR::DB, ADODB esetén), illetve a csatlakozás adatait (user, dbnév, port).

Remélem, e cikk alapján többen kapnak kedvet a PostgreSQL kipróbálásához. Mint látható, telepítése egyátalán nem bonyolultabb mint a MySQL felrakása. A tudása bőven a MySQL felé helyezné a PostgreSQL-t egy nem létező listán. (Én még kihívónak sem tekintem a MySQL-t így, több MySQL projekten túl).

Még egy megjegyzésem lenne: így ejstd ki a nevét: Post-Gres-Q-L. Nem "postgre" (mint ahogy a MySQL sem "my")! (mp3)

A cikkben említett linkek, felhasznált irodalom

http://www.postgresql.org/

http://www.postgresq…s/text/FAQ_hungarian
http://www.debian.org
http://www.egominfo.hu/setup.html
http://cygwin.com/
http://openacs.org/p…y/why-not-mysql.html
http://gborg.postgresql.org/
http://www.postgresq…l.org/postgresql.mp3