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:
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):
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.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
Bakker! Mennyit lehet am szopni ezzel a postgresqlel… ahh