Commit aef03772 authored by Bruce Momjian's avatar Bruce Momjian

Update Polish FAQ, from Marcin Mazurek.

parent 3783ed34
Frequently Asked Questions (FAQ) o PostgreSQL Frequently Asked Questions (FAQ) o PostgreSQL
Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002 Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004
Ostatnia aktualizacja tl/umaczenia: Piatek Marzec 5 19:31:12 EST 2004
Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl) Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl)
Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem: Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem:
http://www.PostgreSQL.org/docs/faq-english.html. http://www.PostgreSQL.org/docs/faqs/FAQ.html.
Odpowiedzi na pytania dotyczace konkretnych systemw operacyjnych Odpowiedzi na pytania dotyczace konkretnych systemw operacyjnych
mozna znalezc pod adresem: mozna znalezc pod adresem: http://www.PostgreSQL.org/docs/index.html.
http://www.PostgreSQL.org/users-lounge/docs/faq.html.
_________________________________________________________________ _________________________________________________________________
Pytania oglne Pytania oglne
...@@ -40,18 +41,17 @@ ...@@ -40,18 +41,17 @@
2.1) Czy sa jakies driwery ODBC dla PostgreSQL? 2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL 2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL
przez www? przez www?
2.3) Czy istnieje jakies GUI dla PostgreSQL? Narzedzie do 2.3) Czy istnieje jakies GUI dla PostgreSQL?
raportowania? Interfejs dla "embedded query language"?
2.4) Za pomoca jakich jezykw programowania mozna sie komunikowac z 2.4) Za pomoca jakich jezykw programowania mozna sie komunikowac z
PostgreSQL? PostgreSQL?
Pytania administratora Pytania dotyczace administracji
3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz 3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
/usr/local/pgsql? /usr/local/pgsql?
3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call 3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call
lub "core dumped". Dlaczego? lub "core dumped". Dlaczego?
3.3) Podczas startu postmaster'a, otrzymuje komunikato bl/edzie: 3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
IpcMemoryCreate. Dlaczego? IpcMemoryCreate. Dlaczego?
3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie: 3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
IpcSemaphoreCreate. Dlaczego? IpcSemaphoreCreate. Dlaczego?
...@@ -61,8 +61,9 @@ ...@@ -61,8 +61,9 @@
3.7) Jakie sa mozliwosci wyszukiwania bl/edw? 3.7) Jakie sa mozliwosci wyszukiwania bl/edw?
3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas 3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas
prby pol/aczenia sie z baza danych? prby pol/aczenia sie z baza danych?
3.9) Co to za pliki typu pg_sorttempNNN.NN , ktre znajduja sie w 3.9) Jakie pliki znajduja sie w pg_temp?
katalogu z plikami bazy danych? 3.10) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
skryptw dump i restore?
Pytania dotyczace uzytkowania Pytania dotyczace uzytkowania
...@@ -72,7 +73,7 @@ ...@@ -72,7 +73,7 @@
zapytania? zapytania?
4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod 4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod
psql? psql?
4.4) Jak usunac kolumne z tabeli? 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych? 4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac 4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac
dane ze zwyczajnego pliku tekstowego? dane ze zwyczajnego pliku tekstowego?
...@@ -110,6 +111,10 @@ ...@@ -110,6 +111,10 @@
4.23) Jak wykonac "outer join"? 4.23) Jak wykonac "outer join"?
4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie? 4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
4.25) Jak zwrcic w funkcji wiele rzedw lub kolumn? 4.25) Jak zwrcic w funkcji wiele rzedw lub kolumn?
4.26) Dlaczego nie moge w sposb pewny tworzyc/usuwac tabel
tymczasowych w funkcjach PL/PgSQL?
4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
Rozwijanie PostgreSQL Rozwijanie PostgreSQL
...@@ -125,7 +130,8 @@ ...@@ -125,7 +130,8 @@
1.1) Co to jest PostgreSQL? Jak to wymawiac? 1.1) Co to jest PostgreSQL? Jak to wymawiac?
PostgreSQL wymawia sie Post-Gres-kju-el. PostgreSQL wymawia sie Post-Gres-kju-el. Czesto podczas rozmw uzywany
jest termin "Postgres"
PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych - PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych -
POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze
...@@ -137,11 +143,13 @@ ...@@ -137,11 +143,13 @@
Rozwj PostgreSQL jest prowadzony przez grupe ludzi z Internetu, Rozwj PostgreSQL jest prowadzony przez grupe ludzi z Internetu,
komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL. komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org). Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org).
(Zobacz ponizej jak sie przyl/aczyc). Ta grupa ludzi jest (Zobacz pytanie 1.6 jak sie przyl/aczyc). Ta grupa ludzi jest
odpowiedzialna za cal/y rozwj PostgreSQL. odpowiedzialna za cal/y rozwj PostgreSQL. PostgreSQL jest projektem
nie kontrolowanym przez zadna firme, aby wziac udzial/ w jego rozwoju
sprawdz, http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych
osb pomogl/o przy portowaniu, testowaniu, debugowaniu, i rozwijaniu osb pomogl/o przy portowaniu, testowaniu, debugowaniu i rozwijaniu
kodu. Oryginalny kod Postgresa, na ktrym zostal/ oparty PostgreSQL, kodu. Oryginalny kod Postgresa, na ktrym zostal/ oparty PostgreSQL,
byl/ wysil/kiem studentw oraz pracownikw pracujacych pod byl/ wysil/kiem studentw oraz pracownikw pracujacych pod
kierownictwem profesora Michael'a Stonebraker'a z University of kierownictwem profesora Michael'a Stonebraker'a z University of
...@@ -194,11 +202,11 @@ ...@@ -194,11 +202,11 @@
Klient Klient
Mozliwa jest kompilacja bibliteki C libpq C, psql oraz innych Mozliwa jest kompilacja bibliteki C libpq, psql oraz innych
interfejsw i uruchamianie ich na platformie MS Windows. W tym wypadku interfejsw i uruchamianie ich na platformie MS Windows. W tym wypadku
klient jest uruchamiany na MS Windows a z serwerem komunikuje sie klient jest uruchamiany na MS Windows a z serwerem komunikuje sie
poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie
Unixowej. Plik win31.mak jest dol/aczony do zrdel/, aby mozna byl/o Unixowej. Plik win32.mak jest dol/aczony do zrdel/, aby mozna byl/o
stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku
Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC. Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC.
...@@ -206,9 +214,17 @@ ...@@ -206,9 +214,17 @@
Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek
Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w
zrdl/ach lub pod adresem: MS Windows FAQ na naszych stronach. Nie zrdl/ach lub pod adresem:
planujemy tworzyc portu przeznaczonego docelowo dla platformy http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych
Microsoft. stronach.
Obecnie prowadzone sa prace nad stworzeniem wersji dla MS Win
NT/200/XP. Jesli chcesz sie dowiedziec o obecnym statusie tych prac
zobacz http://techdocs.postgresql.org/guides/Windows and
http://momjian.postgresql.org/main/writings/pgsql/win32.html.
Istnieje takze port pod Novell Netware 6 dostepny pod adresem
http://forge.novell.com.
1.5) Skad mozna sciagnac PostgreSQL? 1.5) Skad mozna sciagnac PostgreSQL?
...@@ -258,31 +274,31 @@ ...@@ -258,31 +274,31 @@
irc.phoenix.net. irc.phoenix.net.
Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie
pod adresem: pod adresem: http://techdocs.postgresql.org/companies.php.
http://www.postgresql.org/users-lounge/commercial-support.html.
1.7) Jaka jest ostatnia dostepna wersja? 1.7) Jaka jest ostatnia dostepna wersja?
Ostatnia dostepna wersja PostgreSQL to 7.2.1. Ostatnia dostepna wersja PostgreSQL to 7.4.1.
Planujemy publikowanie kolejnych wersji co cztery miesiace. Planujemy publikowanie kolejnych wersji co szesc do osmiu miesiecy.
1.8) Jaka dokumentacja jest dostepna? 1.8) Jaka dokumentacja jest dostepna?
Kilka manuali, stron podecznika man, oraz kilka przykl/adw do Kilka manuali, stron podecznika man, oraz kilka przykl/adw do
testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w
katalogu /doc. Manual moze byc takze przegladany poprzez strony www katalogu /doc. Manual moze byc takze przegladany poprzez strony www
pod adresem http://www.PostgreSQL.org/users-lounge/docs/. pod adresem http://www.PostgreSQL.org/docs.
Istnieja takze dwie ksiazki dostepne online pod adresami Istnieja takze dwie ksiazki dostepne online pod adresami
http://www.PostgreSQL.org/docs/awbook.html i http://www.PostgreSQL.org/docs/awbook.html i
http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL, http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL,
ktre mozna kupic znajduje sie pod adresem ktre mozna kupic znajduje sie pod adresem
http://www.postgresql.org/books/. Zbir technicznych artykul/w o http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Zbir
PostgreSQL znajduje sie pod adresem http://techdocs.postgresql.org/. technicznych artykul/w o PostgreSQL znajduje sie pod adresem
http://techdocs.postgresql.org/.
psql posiada kilka wbudowanych polecen \d, za pomoca ktrych mozna psql posiada kilka wbudowanych polecen \d, za pomoca ktrych mozna
sprawdzic informacje dotyczace typw, operatorw, funkcji, aggregatw sprawdzic informacje dotyczace typw, operatorw, funkcji, agregatw
itd. itd.
Na naszej stronie mozna znalezc duzo wiecej dokumentacji. Na naszej stronie mozna znalezc duzo wiecej dokumentacji.
...@@ -327,7 +343,8 @@ ...@@ -327,7 +343,8 @@
Jest okol/o 12 osb, ktre maja uprawnienia do commit'owania w CVS Jest okol/o 12 osb, ktre maja uprawnienia do commit'owania w CVS
PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci
patchy, ze stal/o sie niemozliwe dla obecnych commiterw byc z nimi na patchy, ze stal/o sie niemozliwe dla obecnych commiterw byc z nimi na
biezaco, majac pewnosc ze sa to poprawki wysokiej jakosci. biezaco, wiec musielismy im ufac i miec pewnosc, ze ich poprawki sa
wysokiej jakosci.
1.13) Jak moge zgl/aszac bl/edy? 1.13) Jak moge zgl/aszac bl/edy?
...@@ -349,44 +366,33 @@ ...@@ -349,44 +366,33 @@
integrity, oraz wyrafinowany system blokowania. Mamy takze integrity, oraz wyrafinowany system blokowania. Mamy takze
wl/asciowsci ktrych inni nie posiadaja, jak typy definiowane wl/asciowsci ktrych inni nie posiadaja, jak typy definiowane
przez uzytkownika, dziedziczenie, rules, multi-version przez uzytkownika, dziedziczenie, rules, multi-version
concurrency control, ktra redukuje problemy z blokowaiem (lock concurrency control, ktra redukuje problemy z blokowaniem
contention). (lock contention).
Wydajnosc Wydajnosc
PostgreSQL dzial/a w dwch trybach. Standardowy tryb fsync Wydajnosc PostgreSQL jest podobna do innych komercyjnych i open
zrzuca kazda zakonczona transakcje na dysk, gwarantujac w ten source baz danych. W niektrych sytuacjach jest szybszy w
sposb to, ze jesli system operacyjny sie zawiesi lub straci niektrych wolniejszy. W porwnianiu do MySQL lub mniejszych
zasilanie wciagu kilku nastepnych sekund, wszystkie Twoje dane baz danych jestesmy szybsi przy wielu uzytkownikach,
zostana bezpiecznie zapisane na dysku. W tym trybie, jestesmy skomplikowaych zapytaniach i duzym obciazeniu podczas. MySQL
wolniejsi niz wiekszosc komercyjnych baz danych, czesciowo jest szybszy dla prostych SELECTw wykonywanych przez niewielu
dlatego ze niewiele z nich wykonuje taki sposb zapisywania uzytkownikw. Spowodowane jest to narzutem, ktry sie pojawia
danych jako domyslne ustawienie. W trybie no-fsync z regul/y przy transakcjach. Oczywiscie MySQL nie ma wiekszosci z
jestesmy szybsi niz komercyjne bazy danych, chociaz w tym rozwiazan opisanych powyzej w sekcji Mozliwosci . PostgreSQL
wypadku zawieszenie sie systemu moze spowodowac uszkodzenie zostal/ stworzony z mysla o stabilnosci, oraz szerokiej gamie
danych. Pracujemy nad tym, aby stworzyc posredni tryb, ktry mozliwosci, ale mimo to staramy sie w kazdej wersji poprawiac
powoduje mniejsza redukcje wydajnosci niz tryb fsync i pozwoli jego wydajnosc. Ciekawe porwnanie PostgreSQL i MySQL mozna
na integralnosc danych w przeciagu 30 sekund do zal/amania sie znalezc pod adresem
systemu operacyjnego. http://openacs.org/philosophy/why-not-mysql.html Dodatkowo,
Porwnujac do MySQL czy innych prostych baz danych, jestesmy MySQL jest firma, ktra dystrybuuje jej produkty poprzez zasade
wolniejsi przy wykonywaniu insertw/updatw przez narzut Open Source i wymaga wykupienia licencji w przypadku tworzenia
spowodowany przez transakcje. Oczywiscie MySQL nie posiada close-source software, co ie ma miejsca w przypadku PostgreSQL.
zadnej z wymienionych wyzej mozliwosci. PostgreSQL zostal/
zbudowany aby byc DBMS elastycznym i bogatym z rznorakie
mozliwosci, aczkolwiek dbamy, aby poprawiac jego wydajnosc
poprzez analize kodu zrdl/owego i profilowanie. Ciekawe
porwnanie PostgreSQL i MySQL mozna znalezc pod adresem
http://openacs.org/why-not-mysql.html
Kazde pol/aczenie klienta jest obsl/ugiwane przez nas poprzez
stworzenie nowego procesu Unixowego. Procesy backendu dziela
bufory danych oraz informacje o blokadach. Uzywajac wielu
procesorw, rzne backendy moga bez problemu dzial/ac na
rznych procesorach.
Stabilnosc Stabilnosc
Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym
wypadku jest bez wartosci. Staramy sie publikowac kod stabilny, wypadku jest bez wartosci. Staramy sie publikowac kod stabilny,
dobrze przetestowany, z minimum mozliwych bl/edw. Kazde dobrze przetestowany, z minimum mozliwych bl/edw. Kazde
wydanie poprzedza conajmniej miesiac testw wersji beta. wydanie poprzedza co najmniej miesiac testw wersji beta.
Patrzac na historie wydan PostgreSQL widac, ze dostarczamy Patrzac na historie wydan PostgreSQL widac, ze dostarczamy
stabilne, dobrze sprawdzone wersje, ktre sa gotowe do uzycia w stabilne, dobrze sprawdzone wersje, ktre sa gotowe do uzycia w
srodowisku produkcyjnym. Myslimy, ze proces publikowania srodowisku produkcyjnym. Myslimy, ze proces publikowania
...@@ -415,9 +421,9 @@ ...@@ -415,9 +421,9 @@
1.15) W jaki sposb moge wesprzec finansowo PostgreSQL? 1.15) W jaki sposb moge wesprzec finansowo PostgreSQL?
PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku
istnienia projektu, tzn. szesciu lat. Wszystko to zawdzieczamy istnienia projektu, czyli roku 1996 kiedy rozpoczelismy prace.
Marc'owi Fournier'owi, ktry stworzyl/ ta infrastrukture i zarzadza Wszystko to zawdzieczamy Marc'owi Fournier'owi, ktry stworzyl/ ta
nia od lat. infrastrukture i zarzadza nia od lat.
Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu
open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek
...@@ -427,7 +433,7 @@ ...@@ -427,7 +433,7 @@
tanie. Istnieje wiele rznych miesiecznych, czy jednorazowych tanie. Istnieje wiele rznych miesiecznych, czy jednorazowych
wydatkw, ktre trzeba ponosic aby wszystko dzial/al/o jak nalezy. wydatkw, ktre trzeba ponosic aby wszystko dzial/al/o jak nalezy.
Jesli Ty, badz Twoja firma moze wspomc finansowo rozwj PostgreSQL Jesli Ty, badz Twoja firma moze wspomc finansowo rozwj PostgreSQL
odwiedz adres: http://www.pgsql.com/pg_goodies gdzie opisane jest jak odwiedz adres: http://store.pgsql.com/shopping/ gdzie opisane jest jak
to zrobic. to zrobic.
Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa
...@@ -436,69 +442,72 @@ ...@@ -436,69 +442,72 @@
wysl/ac czek na adres kontaktowy. wysl/ac czek na adres kontaktowy.
_________________________________________________________________ _________________________________________________________________
Jesli mozesz sie pochwalic udanymi wdrozeniami PostgreSQL, prosimy
abys zgl/osil/ nam to na stronie: http://advocacy.postgresql.org.
User Client Questions User Client Questions
2.1) Czy sa jakies driwery ODBC dla PostgreSQL? 2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC. Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC.
PsqlODBC jest dol/aczony do zrdel/. Wiecej informacji na jego temat Mozesz pobrac PsqlODBC z adresu
mozesz znalezc pod adresem: ftp://ftp.PostgreSQL.org/pub/odbc/. http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com. OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com.
Wspl/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w Wspl/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w
ten sposb mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej ten sposb mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej
plaformie ktra wspiera (Win, Mac, Unix, VMS). pltaformie ktra wspiera (Win, Mac, Unix, VMS).
Autorzy beda prawdopodobnie sprzedawac ten produkt osobom ktre Autorzy beda prawdopodobnie sprzedawac ten produkt osobom ktre
wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze
dostepna. Wszystkie pytania mozesz wysyl/ac na adres: dostepna. Wszystkie pytania mozesz wysyl/ac na adres:
postgres95@openlink.co.uk. postgres95@openlink.co.uk.
Sprawdz takze rozdzial/ o ODBC w "Programmer's Guide".
2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez 2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez
www? www?
Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez
www mozesz znalezc pod adresem: http://www.webreview.com www mozesz znalezc pod adresem: http://www.webreview.com
Inny znajduje sie pod adresem: http://www.phone.net/home/mwm/hotlist/.
Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc
wiecej informacji na ten temat pod adresem http://www.php.net. wiecej informacji na ten temat pod adresem http://www.php.net.
Wiele osb w przypadku skomplikowanych rozwiazan uzywa Perl'a i Wiele osb w przypadku skomplikowanych rozwiazan uzywa Perl'a i
modul/u CGI.pl. modul/u CGI.pl lub mod_perl.
2.3) Czy istnieje jakies GUI dla PostgreSQL? Narzedzie do raportowania? 2.3) Czy istnieje jakies GUI dla PostgreSQL?
Interfejs dla "embedded query language"?
Mamy cal/kiem mil/y interfejs graficzny, ktry zostal/ nazwany Tak, istnieje kilka interfejsw graficznych dla PostgreSQL. Wsrd nich
pgaccess i jest on dostarczany jako czesc zrdel/. pgaccess posiada PgAccess ( http://www.pgaccess.org), PgAdmin III
takze generator raportw. Mozna go znalezc pod adresem (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
http://www.flex.ro/pgaccess ) oraz Rekall ( http://www.thekompany.com/products/rekall/,
komercyjny). Istnieje takze PHPPgAdmin (
http://phppgadmin.sourceforge.net/ ), webowy interfejs dla PostgreSQL.
Udostepnilismy takze ecpg, ktry jest "embedded SQL query language Wiecej informacji na ten temat znajduje sie pod adresem See
interface" dla jezyka C. http://techdocs.postgresql.org/guides/GUITools.
2.4) Za pomoca jakich jezykw programowania mozna sie komunikowac z 2.4) Za pomoca jakich jezykw programowania mozna sie komunikowac z
PostgreSQL? PostgreSQL?
Mamy wsparcie dla: Najbardziej popularne jezyki posiiadaja wl/asny interfejs dla
PostgreSQL. Sprawdz liste rozszerzen dla intersujacego Ciebie jezyka
programowania.
Ze zrdl/ami PostreSQL dystrubuowane sa interfejsy dla nastepujacych
jezykw programowania:
* C (libpq) * C (libpq)
* C++ (libpq++)
* Embedded C (ecpg) * Embedded C (ecpg)
* Java (jdbc) * Java (jdbc)
* Perl (perl5)
* ODBC (odbc)
* Python (PyGreSQL) * Python (PyGreSQL)
* TCL (libpgtcl) * TCL (libpgtcl)
* C Easy API (libpgeasy)
* Embedded HTML (PHP z http://www.php.net) Inne interfejsy sa dostepne pod adresem: http://gborg.postgresql.org w
sekcji Drivers/Interfaces.
_________________________________________________________________ _________________________________________________________________
Pytania administratora Pytania dotyczace administracji
3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz 3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
/usr/local/pgsql? /usr/local/pgsql?
...@@ -566,7 +575,7 @@ ...@@ -566,7 +575,7 @@
pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku
okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako
pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w
jednym bloku transakcji. To redukuje narzut powodowany przez jednym bloku transakcji. To redukuje narzut nakl/adany przez
transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na
nowo indeksy. nowo indeksy.
...@@ -665,25 +674,36 @@ ...@@ -665,25 +674,36 @@
limit na maksymalna liczbe procesw backendu to obawa o wyczerpanie limit na maksymalna liczbe procesw backendu to obawa o wyczerpanie
zasobw systemu. zasobw systemu.
W wersjach PostgreSQL wczesniejszych niz 6.5, maksymalna liczba 3.9) Jakie pliki znajduja sie w pg_temp?
backendw byl/a ustawiona na 64, a zmiana tej wartosci wymaga
rekompliacji po zmianie stal/ej MaxBackendId w pliku
include/storage/sinvaladt.h.
3.9) Co to sa za pliki typu: pg_sorttempNNN.NN, ktre znajduja sie w
katalogu z plikami bazy danych?
Sa to tymczasowe pliki utworzone przez executor. Dla przykl/adu, jesli Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
jakas operacja sortowania jest wymagana do wykonania ORDER BY, a samo przykl/adu, jesli jakas operacja sortowania jest wymagana do wykonania
sortowanie wymaga wiecej miejsca niz paratmetr backendu -S ustawil/ do ORDER BY, a samo sortowanie wymaga wiecej miejsca niz parametr
wykorzystania, wtedy tymczasowe pliki sa uzywane do przechowywania backendu -S ustawil/ do wykorzystania, wtedy tymczasowe pliki sa
tych danych. uzywane do przechowywania tych danych.
Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to
nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie
poprawnie podczas operacji sortowania. Jesli w danym momencie nie poprawnie podczas operacji sortowania. Jesli w danym momencie nie
dzial/aja zadne procesy backendw mozesz spokojnie usunac pliki dzial/aja zadne procesy backendw mozesz spokojnie usunac pliki
pg_tempNNN.NN. pg_tempNNN.NN.
3.9) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
skryptw dump i restore?
Twrcy PostgreSQL dokonuja jedynie mal/ych zmian pomiedzy mal/ymi
upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
korzystania z dump i restore. Przy wiekszych zmianach, np. z wersji
7.2 do 7.3, czesto zmianymaja wpl/yw na format przechowywanych danych.
Zmiany te sa na tyle skomplikowane, ze nie utrzymujemy zgodosci z
poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
takiej postaci, w ktrej l/atwe jest ich zaimportowanie do nowszych
wersji bez kl/opotu.
W wydaniach gdzie zmiany nie dotycza formatu danych na dysku, mozna
wykorzystac skryptu pg_upgrade, do upgradu bez uzycia dump/restore.
Dokumentacja do danego wydania zawiera informacje czy mozliwe jest
uzycie pg_upgrade.
_________________________________________________________________ _________________________________________________________________
Pytania dotyczace uzywania Pytania dotyczace uzywania
...@@ -706,6 +726,13 @@ ...@@ -706,6 +726,13 @@
pierwszych rzedw, byc moze bedzie koniecznosc wykonania zapytania do pierwszych rzedw, byc moze bedzie koniecznosc wykonania zapytania do
momentu az zostana znalezione pozadane wyniki. momentu az zostana znalezione pozadane wyniki.
Aby otrzymac losowy rzad, uzyj:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql? 4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql?
Mozesz sprawdzic zawartosc zrdel/ psql, a konkretnie plik Mozesz sprawdzic zawartosc zrdel/ psql, a konkretnie plik
...@@ -714,36 +741,44 @@ ...@@ -714,36 +741,44 @@
wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie
zapytanie, ktre w rzeczywistosci jest wykonywane. zapytanie, ktre w rzeczywistosci jest wykonywane.
4.4) Jak usunac kolumne z tabeli? 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
Nie mamy zaimplementowanego ALTER TABLE DROP COLUMN, ale mozesz zrobic DROP COLUMNT zostal/o dodane w wersji 7.3 przy poleceniu ALTER TABLE
tak: DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
SELECT ... -- wybierz zawartosc wszystkich kolumn poza ta jedna ktrej chc BEGIN;
esz sie pozbyc LOCAL TABLE old_table;
SELECT ... -- wybierz wszystkie kolumny poza ta jedna ktrej chcesz sie po
zbyc
INTO TABLE new_table INTO TABLE new_table
FROM old_table; FROM old_table;
DROP TABLE old_table; DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
Aby zmienic typ danych kolumny mozesz zrobic tak:
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych? 4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
Oto wszystkie ograniczenia: Oto wszystkie ograniczenia:
Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja bazy dan Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja
ych o wielkosci 500 GB databases ) bazy danych o wielkosci 32 TB databases )
Maksymalny rozmiar dla tabeli? 16 TB Maksymalny rozmiar dla tabeli? 32 TB
Maksymalny rozmiar dla rzedu? nieograniczony w 7.1 i pzniejszyc Maksymalny rozmiar dla rzedu? 1.6 TB
h Maksymalny rozmiar pola? 1 GB
Maksymalny rozmiar pola? 1 GB w 7.1 and later
Maksymalna liczba rzedw w tabeli? nieograniczona Maksymalna liczba rzedw w tabeli? nieograniczona
Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typw kolum Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typw ko
n lumn
Makasymalna liczba indeksw na tabeli? nieograniczona Makasymalna liczba indeksw na tabeli? nieograniczona
Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa. ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa.
Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci. Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci.
Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
operacyjnego wsparcia dla duzych plikw. Duze tabele sa przechowywane operacyjnego wsparcia dla duzych plikw. Duze tabele sa przechowywane
jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plikw jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plikw
narzucone przez system plikw nie sa istotne. narzucone przez system plikw nie sa istotne.
...@@ -786,6 +821,9 @@ n ...@@ -786,6 +821,9 @@ n
zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem
duze. duze.
NULLe sa przechowywane jako mapy bitowe, wiec uzywaja bardzo mal/o
miejsca.
4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa 4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa
utworzeni? utworzeni?
...@@ -821,14 +859,32 @@ n ...@@ -821,14 +859,32 @@ n
sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
na duzej tabeli. na duzej tabeli.
Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/ Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
indeksw poniewaz jedynie mal/a czesc z tabeli jest zwracana. indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeksw, mozliwe
jest aby zwrcic te wartosci uzywajac indeksw poprzez uzycie ORDER BY
i LIMIT.
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
Jesli uwazasz, ze optimizer myli sie wybierajac sequential scan, uzyj
SET enable_seqscan TO 'off' i uruchom testy aby sprawdzic czy wtym
wypadku zapytanie bedzie szybciej wykonywane.
Kiedy uzywa sie operatorw dopasujacych takich jak LIKE lub ~, indeksy Kiedy uzywa sie operatorw dopasujacych takich jak LIKE lub ~, indeksy
beda uzywane jedynie jesli poczatek wyszukiwania jest oparty na beda uzywane jedynie w pewnych wypadkach:
poczatku l/ancucha tekstu. Dlatego, aby uzywac indeksw, dopasowania * Poczatek wyszukiwania jest oparty na poczatku l/ancucha tekstu.
operatorem LIKE nie moga sie zaczynac %, a dopasowania operatorem ~ + wzorce LIKE nie moga sie zaczynac %
(dopasowania regularne) musza sie zaczynac znakiem specjalnym ^. + dopasowania operatorem ~ (dopasowania regularne) musza sie
zaczynac znakiem specjalnym ^.
* Poczatek wyszukiwania nie moze sie zaczynac od klas znakw, np.
[a-e].
* Case-insensitive searches such as ILIKE and ~* do not utilise
indexes. Instead, use functional indexes, which are described in
section 4.12.
* Standardowe locale C musi byc uzyte przy wykonywaniu initdb
4.9) Jak moge sprawdzic w jakis sposb "query optimizer" wykonuje moje 4.9) Jak moge sprawdzic w jakis sposb "query optimizer" wykonuje moje
zapytanie? zapytanie?
...@@ -869,13 +925,12 @@ n ...@@ -869,13 +925,12 @@ n
queries) bez wykorzystywania zasobozernego wyszukiwania. queries) bez wykorzystywania zasobozernego wyszukiwania.
4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan 4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
case-insensitive w wyrazeniach regularnych? jak korzystac z indeksw dla case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksw dla
zapytan case-insensitive? zapytan case-insensitive?
Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen
regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami
regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE i regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE.
jest dostepny w PostgreSQL 7.1 i pzniejszych wersjach.
Porwnania case-insensitive sa zazwyczaj wykonywane w nastepujacy Porwnania case-insensitive sa zazwyczaj wykonywane w nastepujacy
sposb: sposb:
...@@ -897,31 +952,35 @@ n ...@@ -897,31 +952,35 @@ n
Type Nazwa wewnetrzna Uwagi Type Nazwa wewnetrzna Uwagi
-------------------------------------------------- --------------------------------------------------
"char" char 1 znak VARCHAR(n) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
CHAR(#) bpchar wypel/niane pustymi znakami do podanej dl/ug
osci
VARCHAR(#) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
tutaj wypel/niania tutaj wypel/niania
CHAR(n) bpchar wypel/niane pustymi znakami do podanej dl/ug
osci
TEXT text bez limitu na dl/ugosc l/ancucha TEXT text bez limitu na dl/ugosc l/ancucha
BYTEA bytea zmiennej dl/ugosci tablica bajtw (null-byte BYTEA bytea zmiennej dl/ugosci tablica bajtw (null-byte
safe) safe)
"char" char 1 znak
Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi. czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi.
Ostatnie cztery typy powyzej to tzw typy "varlena" (np. pierwsze Pierwsze cztery typy powyzej to tzw typy "varlena" (np. pierwsze
cztery bajty na dysku to dl/ugosc, po ktrych jest data). Dlatego cztery bajty na dysku to dl/ugosc, po ktrych jest data). Dlatego
faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz
zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
na dysku moze byc mniejsze niz oczekiwane. na dysku moze byc mniejsze niz oczekiwane.
VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuchw o
CHAR() jast najlepszym typem do przechowywania l/ancuchw o tej samej rznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
dl/ugosci. VARCHAR() jest najodpowiedniejszy do przechowywania najlepszy dla l/ancuchw o dowolnej dl/ugosci, nie przekraczajacej
l/ancuchw o rznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. 1GB.
TEXT jest najlepszy dla l/ancuchw o dowolnej dl/ugosci, nie
przekraczajacej 1GB. BYTEA sl/uzy do przechowywania danych binarnych, CHAR(n) jast najlepszym typem do przechowywania l/ancuchw o tej samej
w szczeglnosci dla danych zawierajacych NULL bajty. dl/ugosci. CHAR(n) wypel/nia dane do zadanej dl/ugosci, podczas gdy
VARCHAR(n) przechowuje jedynie dane dostarczone. BYTEA sl/uzy do
przechowywania danych binarnych, w szczeglnosci dla danych
zawierajacych NULL bajty. Wszystkie typy opisane tutaj maja podobne
charakterystyki jesli chodzi o wydajnosc.
4.15.1) Jak moge utworzyc pole ktre samo zwieksza swoja wartosc? 4.15.1) Jak moge utworzyc pole ktre samo zwieksza swoja wartosc?
...@@ -1039,16 +1098,16 @@ BYTEA bytea zmiennej dl/ugosci tablica bajt ...@@ -1039,16 +1098,16 @@ BYTEA bytea zmiennej dl/ugosci tablica bajt
* range variable, table name, table alias * range variable, table name, table alias
Liste terminw zwiazanych z bazami danych mozesz znalezc pod tym Liste terminw zwiazanych z bazami danych mozesz znalezc pod tym
adresem:http://www.comptechnews.com/~reaster/dbdesign.html adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/
glossary/glossary.html.
4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in 4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
Jesli uzywasz wersji starszej niz 7.1, upgrade moze rozwiazac ten Prawdopodobnie wyczerpal/a Ci sie pamiec wirtualna (virtual memory) w
problem. Jest takze mozliwe, ze po prostu wyczerpal/a Ci sie pamiec systemie lub Twj kernel ma zbyt nisko ustawione limity dla pewnych
wirtualna (virtual memory) w systemie lub Twj kernel ma zbyt nisko zasobw. Sprbuj wykonac nastepujace polecenia zanim uruchomisz
ustawione limity dla pewnych zasobw. Sprbuj wykonac nastepujace postmaster'a:
polecenia zanim uruchomisz postmaster'a:
ulimit -d 262144 ulimit -d 262144
limit datasize 256m limit datasize 256m
...@@ -1087,24 +1146,31 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); ...@@ -1087,24 +1146,31 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Dlaczego zapytania uzywajace IN sa takie wolne? 4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
Obecnie l/aczymy podzapytania w outer queries poprzez sekwencyjne W wersjach wczesniejszych niz 7.4 l/aczymy podzapytania w outer
przeszukiwanie wynikw podzapytania dla kazdego rzedu z outer query. queries poprzez sekwencyjne przeszukiwanie wynikw podzapytania dla
Mozna to ominac zastepujac IN przez EXISTS: kazdego rzedu z outer query. Jesli podzapytanie zwraca jedynie kilka
rzedw a zewnetrzne zapytanie zwraca ich wiele, IN jest najszybsze.
Aby przyspieszyc inne zapytania mozna zastapic IN przez EXISTS:
SELECT * SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col IN (SELECT subcol FROM subtab)
na: na:
SELECT * SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
Mamy zamiar poprawic to ograniczenie w przyszl/ych wydaniach. Aby to rozwiazanie byl/o szybkie, subcol powinna byc kolumna
indeksowana.
W wersji 7.4 i pzniejszych, IN w rzeczywistosci uzywa tej samej
wyrafinowanej techniki l/aczenia jak normalne zapytania i jest
preferowane nad uzywaniem EXISTS.
4.23) Jak wykonac "outer join"? 4.23) Jak wykonac "outer join"?
PostgreSQL 7.1 i pzniejsze wersje maja zaimplementowane outer join PostgreSQL ma zaimplementowane outer join wykorzystujac standardowa
wykorzystujac standardowa skl/adnie SQL. Ponizej dwa przykl/ady: skl/adnie SQL. Ponizej dwa przykl/ady:
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
...@@ -1113,7 +1179,7 @@ SELECT * ...@@ -1113,7 +1179,7 @@ SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); FROM t1 LEFT OUTER JOIN t2 USING (col);
Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col, Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col,
ale takze zwrca niepol/aczone rzedy w t1 (te ktre nie pasuja w t2). ale takze zwrca niepol/aczone rzedy w t1 (te, ktre nie pasuja w t2).
RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join
zwrcil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2. zwrcil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2.
Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT, Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT,
...@@ -1138,37 +1204,75 @@ SELECT * ...@@ -1138,37 +1204,75 @@ SELECT *
katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy
rznymi bazami danych powinno sie zachowywac. rznymi bazami danych powinno sie zachowywac.
Oczywiscie klient moze l/aczyc sie z rznymi bazami danych i l/aczyc contrib/dblink pozwala na wykonywanie zapytan poprzez rzne bazy
informacje w ten sposb uzyskana. danych wywol/ujac odpowiednie funkcje. Oczywiscie klient moze l/aczyc
sie z rznymi bazami danych i l/aczyc informacje w ten sposb uzyskana
po stronie klienta.
4.25) Jak zwrcic w funkcji wiele rzedw lub kolumn? 4.25) Jak zwrcic w funkcji wiele rzedw lub kolumn?
Mozesz zwracac zbiory z funkcji PL/pgSQL uzywajac refcursors. Zobacz Mozesz w l/atwy sposb zwracac wiele rzedw lub kolumn uzywajac
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html, funkcji z:
sekcje 23.7.3.3. http://techdocs.postgresql.org/guides/SetReturningFunctions.
4.26) Dlaczego nie moge w sposb pewny tworzyc/usuwac tabel tymczasowych w
funkcjach PL/PgSQL?
PL/PgSQL przechowuje w cache zawartosc funkcji, niepozadanym efektem
tego jest to, ze gdy taka funkcja korzysta z tabel tymczasowych, ktre
sa pzniej kasowane i odtwarzane, a funkcja wywol/ywana jest
ponownie,jej wywol/anie nie powiedzie sie poniewaz cachowana funkcja
wciaz bedzie wskazywac na stara tablice tymczasowa. Rozwiazaniem tego
problemu jest uzywanie EXECUTE aby korzystac z tabel tymczasowych w
PL/PgSQL. To spowoduje, ze zapytanie bedzie parsowane przy kazdym
wywol/aniu funkcji.
4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ pozwala
jedynie masterowi na dokonywanie zmian w bazie danych, a slave moze jedynie
te zmiany odczytywac. Na stronie
http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie ich
lista. Replikacja typu multi-master jest w trakcie prac, opis projektu
znajduje sie pod adresem:
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
* contrib/pgcrypto zawiera wiele funkcji za pomoca, ktrych mozemy
uzywac kryptografii w zapytaniach SQL.
* Aby szyfrowac transmisje od klienta do serwera, ten musi miec
ustawiona opcje ssl na true w pliku postgresql.conf, odpowiedni
wpis host lub hostssl musi wystepowac w pliku pg_hba.conf, oraz
sslmode nie moze byc wyl/aczone w kliencie. (Warto zwrcic uwage,
ze mozliwe jest takze uzywanie transportw szyfrujacw przez
strony trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem
dla SSL przez PostgreSQL).
* Hasl/a uzytkownikw bazy danych sa automatycznie szyfrowane od
wersji 7.3. W poprzednich wersjach, nalezy ta funkcjonalnosc
poprzez wl/aczenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
* Serwer moze dzial/ac uzywajac szyfrowanego systemu plikw.
Rozwijanie PostgreSQL Rozwijanie PostgreSQL
5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca 5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
pamiec (dump core)? pamiec (dump core)?
Problem moze byc spowodowany przez bardzo wiele rzeczy. Sprbuj Problem moze byc spowodowany przez bardzo wiele rzeczy. Sprbuj najpierw
najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym przetestowac Twoja funkcje w samodzielnie dzial/ajacym programie.
programie.
5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL? 5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
prawdopodobnie Twj kod znajdzie sie w katalogu contrib/. prawdopodobnie Twj kod znajdzie sie w katalogu contrib/.
5.3) Jak napisac funkcje C zwracajaca krotke (tuple)? 5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
To wymaga wysil/ku tak olbrzymiego, ze nawet autorzy nigdy tego nie W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w pelni
prubowali, chociaz z zalozen wynika, ze jest to mozliwe. wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby uzyskac
wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej tabele
zostal/ umieszczony w contrib/tablefunc.
5.4) Zmienil/em plik zrdl/owy. Dlaczego po rekompilacji nie widac zmiany? 5.4) Zmienil/em plik zrdl/owy. Dlaczego po rekompilacji nie widac zmiany?
Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla plikw
plikw nagl/wkowych (include files). Wykonaj najpierw make clean, a nagl/wkowych (include files). Wykonaj najpierw make clean, a nastepnie
nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji ponownie make. Jesli uzywasz GCC mozesz uzyc opcji --enable-depend przy
--enable-depend przy wykonywaniu configure aby wykonywaniu configure aby kompilator mgl/ okreslic zaleznosci
samodzielnie.
...@@ -15,7 +15,9 @@ ...@@ -15,7 +15,9 @@
<H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1> <H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1>
<P>Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002</P> <P>Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004</P>
<P>Ostatnia aktualizacja tumaczenia: Pitek Marzec 5 19:31:12 EST 2004</P>
<P>Obecny maintainer: Bruce Momjian (<A href= <P>Obecny maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
...@@ -24,16 +26,15 @@ ...@@ -24,16 +26,15 @@
"mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl</A>)<BR> "mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl</A>)<BR>
</P> </P>
<P>Najbardziej aktualn wersj tego dokumentu mona znale pod <P>Najbardziej aktualn wersj tego dokumentu mona znale pod
adresem: adresem:
<A href= <A href=
"http://www.Postgresql.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</A>.</P> "http://www.Postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
<P>Odpowiedzi na pytania dotyczce konkretnych systemw operacyjnych <P>Odpowiedzi na pytania dotyczce konkretnych systemw operacyjnych
mona znale pod adresem: mona znale pod adresem:
<A href= <A href=
"http://www.PostgreSQL.org/users-lounge/docs/faq.html">http://www.PostgreSQL.org/users-lounge/docs/faq.html</A>.</P> "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
<HR> <HR>
<H2 align="center">Pytania oglne</H2> <H2 align="center">Pytania oglne</H2>
...@@ -64,20 +65,19 @@ ...@@ -64,20 +65,19 @@
PostgreSQL?<BR> PostgreSQL?<BR>
<A href="#2.2">2.2</A>) Jakie istniej narzdzia pozwalajce na dostp do <A href="#2.2">2.2</A>) Jakie istniej narzdzia pozwalajce na dostp do
PostgreSQL przez www?<BR> PostgreSQL przez www?<BR>
<A href="#2.3">2.3</A>) Czy istnieje jakie GUI dla PostgreSQL? <A href="#2.3">2.3</A>) Czy istnieje jakie GUI dla PostgreSQL?<BR>
Narzdzie do raportowania? Interfejs dla "embedded query language"?<BR>
<A href="#2.4">2.4</A>) Za pomoc jakich jzykw programowania mona <A href="#2.4">2.4</A>) Za pomoc jakich jzykw programowania mona
si komunikowa z PostgreSQL?<BR> si komunikowa z PostgreSQL?<BR>
<H2 align="center">Pytania administratora</H2> <H2 align="center">Pytania dotyczce administracji</H2>
<A href="#3.1">3.1</A>) Jak mog zainstalowa PostgreSQL w innej <A href="#3.1">3.1</A>) Jak mog zainstalowa PostgreSQL w innej
lokalizacji ni <I>/usr/local/pgsql</I>?<BR> lokalizacji ni <I>/usr/local/pgsql</I>?<BR>
<A href="#3.2">3.2</A>) Podczas startu <I>postmaster'a</I>, <A href="#3.2">3.2</A>) Podczas startu <I>postmaster'a</I>,
otrzymuj komunikat: otrzymuj komunikat:
<I>Bad System Call</I> lub "core dumped". Dlaczego?<BR> <I>Bad System Call</I> lub "core dumped". Dlaczego?<BR>
<A href="#3.3">3.3</A>) Podczas startu <I>postmaster'a</I>, <A href="#3.3">3.3</A>) Podczas startu <I>postmaster'a</I>,
otrzymuj komunikato bdzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR> otrzymuj komunikat o bdzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR>
<A href="#3.4">3.4</A>) Podczas startu <I>postmaster'a</I>, <A href="#3.4">3.4</A>) Podczas startu <I>postmaster'a</I>,
otrzymuj komunikat o bdzie: <I>IpcSemaphoreCreate</I>. Dlaczego?<BR> otrzymuj komunikat o bdzie: <I>IpcSemaphoreCreate</I>. Dlaczego?<BR>
<A href="#3.5">3.5</A>) W jaki sposb mog kontrolowa poczenia z <A href="#3.5">3.5</A>) W jaki sposb mog kontrolowa poczenia z
...@@ -87,9 +87,9 @@ ...@@ -87,9 +87,9 @@
<A href="#3.7">3.7</A>) Jakie s moliwoci wyszukiwania bdw?<BR> <A href="#3.7">3.7</A>) Jakie s moliwoci wyszukiwania bdw?<BR>
<A href="#3.8">3.8</A>) Skd si bierze komunikat: <I>"Sorry, too many <A href="#3.8">3.8</A>) Skd si bierze komunikat: <I>"Sorry, too many
clients"</I> podczas prby poczenia si z baz danych?<BR> clients"</I> podczas prby poczenia si z baz danych?<BR>
<A href="#3.9">3.9</A>) Co to za pliki typu <I>pg_sorttempNNN.NN</I> <A href="#3.9">3.9</A>) Jakie pliki znajduj si w <I>pg_temp</I>?<BR>
, ktre znajduj si w katalogu z plikami bazy danych?<BR> <A href="#3.10">3.10</A>) Dlaczego konieczne jest przy upgradzie
PostgreSQL korzystanie ze skryptw dump i restore?<BR>
<H2 align="center">Pytania dotyczce uytkowania</H2> <H2 align="center">Pytania dotyczce uytkowania</H2>
<A href="#4.1">4.1</A>) Jaka jest rnica pomidzy kursorami <A href="#4.1">4.1</A>) Jaka jest rnica pomidzy kursorami
...@@ -98,7 +98,8 @@ ...@@ -98,7 +98,8 @@
jedynie kilka pierwszych wynikw zapytania?<BR> jedynie kilka pierwszych wynikw zapytania?<BR>
<A href="#4.3">4.3</A>) Jak mog uzyska list wszystkich tabel czy <A href="#4.3">4.3</A>) Jak mog uzyska list wszystkich tabel czy
innych rzeczy pod <I>psql</I>?<BR> innych rzeczy pod <I>psql</I>?<BR>
<A href="#4.4">4.4</A>) Jak usun kolumn z tabeli?<BR> <A href="#4.4">4.4</A>) Jak usun kolumn z tabeli lub zmieni jej
typ?<BR>
<A href="#4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzdu, <A href="#4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzdu,
tabeli i bazy danych?<BR> tabeli i bazy danych?<BR>
<A href="#4.6">4.6</A>) Jak duo miejsca w bazie danych jest <A href="#4.6">4.6</A>) Jak duo miejsca w bazie danych jest
...@@ -148,8 +149,13 @@ ...@@ -148,8 +149,13 @@
baz danych jednoczenie?<BR> baz danych jednoczenie?<BR>
<A href="#4.25">4.25</A>) Jak zwrci w funkcji wiele rzdw lub <A href="#4.25">4.25</A>) Jak zwrci w funkcji wiele rzdw lub
kolumn?<BR> kolumn?<BR>
<A href="#4.26">4.26</A>) Dlaczego nie mog w sposb pewny
tworzy/usuwa tabel tymczasowych w funkcjach PL/PgSQL?<BR>
<A href="#4.27">4.27</A>) Jakie s moliwoci replikacji w
PostgreSQL?<BR>
<A href="#4.28">4.28</A>) Jakie moliwoci szyfrowania oferuje
PostgreSQL?<BR>
<H2 align="center">Rozwijanie PostgreSQL</H2> <H2 align="center">Rozwijanie PostgreSQL</H2>
<A href="#5.1">5.1</A>) Napisaem wasn funkcj. Kiedy uyj jej w <A href="#5.1">5.1</A>) Napisaem wasn funkcj. Kiedy uyj jej w
<I>psql</I>, program zrzuca pami (dump core)?<BR> <I>psql</I>, program zrzuca pami (dump core)?<BR>
...@@ -166,7 +172,8 @@ ...@@ -166,7 +172,8 @@
<H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia?</H4> <H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia?</H4>
<P>PostgreSQL wymawia si <I>Post-Gres-kju-el</I>.</P> <P>PostgreSQL wymawia si <I>Post-Gres-kju-el</I>. Czsto podczas
rozmw uywany jest termin "Postgres"</P>
<P>PostgreSQL jest rozszerzeniem systemu zarzdzania bazami danych - <P>PostgreSQL jest rozszerzeniem systemu zarzdzania bazami danych -
POSTGRES, kolejn generacj rozwojowego prototypu <SMALL>DBMS</SMALL>. POSTGRES, kolejn generacj rozwojowego prototypu <SMALL>DBMS</SMALL>.
...@@ -181,11 +188,14 @@ ...@@ -181,11 +188,14 @@
komunikujcych si poprzez mailowe listy dyskusyjne PostgreSQL. komunikujcych si poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (<A href= Obecnym koordynatorem jest Marc G. Fournier (<A href=
"mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (Zobacz "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (Zobacz
poniej jak si przyczy). Ta grupa ludzi jest odpowiedzialna za pytanie <A href="#1.6">1.6</A> jak si przyczy). Ta grupa ludzi jest
cay rozwj PostgreSQL.</P> odpowiedzialna za cay rozwj PostgreSQL. PostgreSQL jest projektem
nie kontrolowanym przez adn firm, aby wzi udzia w jego rozwoju
sprawd, <A href="http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</a></P>
<P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. <P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.
Wiele innych osb pomogo przy portowaniu, testowaniu, debugowaniu, i Wiele innych osb pomogo przy portowaniu, testowaniu, debugowaniu i
rozwijaniu kodu. Oryginalny kod Postgresa, na ktrym zosta oparty rozwijaniu kodu. Oryginalny kod Postgresa, na ktrym zosta oparty
PostgreSQL, by wysikiem studentw oraz pracownikw pracujcych pod PostgreSQL, by wysikiem studentw oraz pracownikw pracujcych pod
kierownictwem profesora Michael'a Stonebraker'a z University of kierownictwem profesora Michael'a Stonebraker'a z University of
...@@ -243,11 +253,11 @@ ...@@ -243,11 +253,11 @@
<P><STRONG>Klient</STRONG></P> <P><STRONG>Klient</STRONG></P>
<P>Moliwa jest kompilacja bibliteki C <I>libpq</I> C, psql oraz <P>Moliwa jest kompilacja bibliteki C <I>libpq</I>, psql oraz
innych interfejsw i uruchamianie ich na platformie MS Windows. W tym innych interfejsw i uruchamianie ich na platformie MS Windows. W tym
wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje si wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje si
poprzez TCP/IP. Serwer moe dziaa na dowolnej wspieranej platformie poprzez TCP/IP. Serwer moe dziaa na dowolnej wspieranej platformie
Unixowej. Plik <I>win31.mak</I> jest doczony Unixowej. Plik <I>win32.mak</I> jest doczony
do rde, aby mona byo stworzy bibliotek <I>libpq</I> oraz do rde, aby mona byo stworzy bibliotek <I>libpq</I> oraz
program <I>psql</I> dziaajce w rodowisku Win32. PostgreSQL moe si program <I>psql</I> dziaajce w rodowisku Win32. PostgreSQL moe si
take komunikowa z klientami <SMALL>ODBC</SMALL>.</P> take komunikowa z klientami <SMALL>ODBC</SMALL>.</P>
...@@ -257,9 +267,18 @@ ...@@ -257,9 +267,18 @@
<P>Serwer moe by uruchamiany na Windows NT i Win2k uywajc <P>Serwer moe by uruchamiany na Windows NT i Win2k uywajc
bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I> bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I>
znajdujcym si w rdach lub pod adresem: <A href= znajdujcym si w rdach lub pod adresem: <A href=
"http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A> "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.<P>
na naszych stronach. Nie planujemy tworzy portu przeznaczonego Obecnie prowadzone s prace nad stworzeniem wersji dla MS Win
docelowo dla platformy Microsoft.</P> NT/200/XP. Jeli chcesz si dowiedzie o obecnym statusie tych prac
zobacz <A
href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> and
<A
href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.
</P>
<P>
Istnieje take port pod Novell Netware 6 dostpny pod adresem <A
href="http://forge.novell.com">http://forge.novell.com</A>.
</P>
<H4><A name="1.5">1.5</A>) Skd mona cign PostgreSQL?</H4> <H4><A name="1.5">1.5</A>) Skd mona cign PostgreSQL?</H4>
...@@ -324,14 +343,13 @@ ...@@ -324,14 +343,13 @@
'#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P> '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
<P>Lista firm oferujcych wsparcie na zasadach komercyjnych znajduje <P>Lista firm oferujcych wsparcie na zasadach komercyjnych znajduje
si pod adresem: <A href= si pod adresem: <A href= "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
"http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</A>.</P>
<H4><A name="1.7">1.7</A>) Jaka jest ostatnia dostpna wersja?</H4> <H4><A name="1.7">1.7</A>) Jaka jest ostatnia dostpna wersja?</H4>
<P>Ostatnia dostpna wersja PostgreSQL to 7.2.1.</P> <P>Ostatnia dostpna wersja PostgreSQL to 7.4.1.</P>
<P>Planujemy publikowanie kolejnych wersji co cztery miesice.</P> <P>Planujemy publikowanie kolejnych wersji co sze do omiu miesicy.</P>
<H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dostpna?</H4> <H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dostpna?</H4>
...@@ -339,8 +357,8 @@ ...@@ -339,8 +357,8 @@
testowania s zaczone w samej dystrybucji. Znajduj si one w testowania s zaczone w samej dystrybucji. Znajduj si one w
katalogu <I>/doc</I>. Manual moe by take przegldany poprzez katalogu <I>/doc</I>. Manual moe by take przegldany poprzez
strony www pod adresem <A href= strony www pod adresem <A href=
"http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</A>.</P> "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
<P>Istniej take dwie ksiki dostpne online pod adresami <P>Istniej take dwie ksiki dostpne online pod adresami
<A href= <A href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
...@@ -348,14 +366,15 @@ ...@@ -348,14 +366,15 @@
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>. "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
Lista ksiek o PostgreSQL, ktre mona kupi znajduje si pod adresem Lista ksiek o PostgreSQL, ktre mona kupi znajduje si pod adresem
<A href= <A href=
"http://www.postgresql.org/books/">http://www.postgresql.org/books/</A>. "http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
Zbir technicznych artykuw o PostgreSQL znajduje si pod adresem <A Zbir technicznych artykuw o PostgreSQL znajduje si pod adresem <A
href= href=
"http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P> "http://techdocs.PostgreSQL.org">http://techdocs.postgresql.org/</A>.</P>
<P><I>psql</I> posiada kilka wbudowanych polece \d, za pomoca ktrych <P><I>psql</I> posiada kilka wbudowanych polece \d, za pomoca ktrych
mona sprawdzi informacje dotyczce typw, operatorw, funkcji, mona sprawdzi informacje dotyczce typw, operatorw, funkcji,
aggregatw itd.</P> agregatw itd.</P>
<P>Na naszej stronie mona znale duo wicej dokumentacji.</P> <P>Na naszej stronie mona znale duo wicej dokumentacji.</P>
...@@ -409,8 +428,8 @@ ...@@ -409,8 +428,8 @@
<P>Jest okoo 12 osb, ktre maj uprawnienia do commit'owania w <P>Jest okoo 12 osb, ktre maj uprawnienia do commit'owania w
<SMALL>CVS</SMALL> PostgreSQL'a. Kady z nich submitowa tak wiele <SMALL>CVS</SMALL> PostgreSQL'a. Kady z nich submitowa tak wiele
wysokiej jakoci patchy, e stao si niemoliwe dla obecnych wysokiej jakoci patchy, e stao si niemoliwe dla obecnych
commiterw by z nimi na bieco, majc pewno e s to poprawki commiterw by z nimi na bieco, wic musielimy im ufa i mie
wysokiej jakoci.</P> pewno, e ich poprawki s wysokiej jakoci.</P>
<H4><A name="1.13">1.13</A>) Jak mog zgasza bdy?</H4> <H4><A name="1.13">1.13</A>) Jak mog zgasza bdy?</H4>
...@@ -437,52 +456,37 @@ ...@@ -437,52 +456,37 @@
oraz wyrafinowany system blokowania. Mamy take waciowci ktrych oraz wyrafinowany system blokowania. Mamy take waciowci ktrych
inni nie posiadaj, jak typy definiowane przez uytkownika, inni nie posiadaj, jak typy definiowane przez uytkownika,
dziedziczenie, rules, multi-version concurrency control, ktra dziedziczenie, rules, multi-version concurrency control, ktra
redukuje problemy z blokowaiem (lock contention).<BR> redukuje problemy z blokowaniem (lock contention).<BR>
<BR> <BR>
</DD> </DD>
<DT><B>Wydajno</B></DT> <DT><B>Wydajno</B></DT>
<DD>PostgreSQL dziaa w dwch trybach. Standardowy tryb <I>fsync</I> <DD>Wydajno PostgreSQL jest podobna do innych komercyjnych i open
zrzuca kad zakoczon transakcj na dysk, gwarantujc w ten source baz danych. W niektrych sytuacjach jest szybszy w
sposb to, e jeli system operacyjny si zawiesi lub straci niektrych wolniejszy. W porwnianiu do MySQL lub mniejszych baz
zasilanie wcigu kilku nastepnych sekund, wszystkie Twoje dane danych jestemy szybsi przy wielu uytkownikach, skomplikowaych
zostan bezpiecznie zapisane na dysku. W tym trybie, jestemy zapytaniach i duym obcieniu podczas. MySQL jest szybszy dla
wolniejsi ni wikszo komercyjnych baz danych, czciowo dlatego prostych SELECTw wykonywanych przez niewielu uytkownikw.
e niewiele z nich wykonuje taki sposb zapisywania danych jako Spowodowane jest to narzutem, ktry si pojawia przy transakcjach.
domylne ustawienie. Oczywicie MySQL nie ma wikszoci z rozwiza opisanych powyej
W trybie <I>no-fsync</I> z reguy jestemy szybsi ni komercyjne w sekcji <I> Moliwoci </I>. PostgreSQL zosta stworzony z myl o
bazy danych, chocia w tym wypadku zawieszenie si systemu moe stabilnoci, oraz szerokiej gamie moliwoci, ale mimo to staramy
spowodowa uszkodzenie danych. Pracujemy nad tym, aby stworzy si w kadej wersji poprawia jego wydajno.
poredni tryb, ktry powoduje mniejsz redukcj wydajnoci ni tryb Ciekawe porwnanie PostgreSQL i MySQL mona znale pod adresem <A href=
fsync i pozwoli na integralno danych w przecigu 30 sekund do "http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>
zaamania si systemu operacyjnego.<BR> Dodatkowo, MySQL jest firm, ktra dystrybuuje jej produkty poprzez
<BR> zasad Open Source i wymaga wykupienia licencji w przypadku
Porwnujc do MySQL czy innych prostych baz danych, jestemy tworzenia close-source software, co ie ma miejsca w przypadku
wolniejsi przy wykonywaniu insertw/updatw przez narzut PostgreSQL.<BR>
spowodowany przez transakcje. Oczywicie MySQL nie posiada adnej z
wymienionych wyej <I>moliwoci</I>. PostgreSQL zosta zbudowany
aby by DBMS elastycznym i bogatym z rnorakie moliwoci,
aczkolwiek dbamy, aby poprawia jego wydajno poprzez analiz
kodu rdowego i profilowanie. Ciekawe porwnanie PostgreSQL i MySQL
mona znale pod adresem <A href=
"http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</A><BR>
<BR>
Kade poczenie klienta jest obsugiwane przez nas poprzez
stworzenie nowego procesu Unixowego. Procesy backendu dziel
bufory danych oraz informacj o blokadach. Uywajc wielu
procesorw, rne backendy mog bez problemu dziaa na rnych
procesorach.<BR>
<BR> <BR>
</DD> </DD>
<DT><B>Stabilno</B></DT> <DT><B>Stabilno</B></DT>
<DD>Zdajemy sobie spraw, e <SMALL>DBMS</SMALL> musi by stabilny, <DD>Zdajemy sobie spraw, e <SMALL>DBMS</SMALL> musi by stabilny,
w przeciwnym wypadku jest bez wartoci. Staramy si publikowa kod w przeciwnym wypadku jest bez wartoci. Staramy si publikowa kod
stabilny, dobrze przetestowany, z minimum moliwych bdw. Kade stabilny, dobrze przetestowany, z minimum moliwych bdw. Kade
wydanie poprzedza conajmniej miesic testw wersji beta. Patrzc na wydanie poprzedza co najmniej miesic testw wersji beta. Patrzc na
histori wyda PostgreSQL wida, e dostarczamy stabilne, dobrze histori wyda PostgreSQL wida, e dostarczamy stabilne, dobrze
sprawdzone wersje, ktre s gotowe do uycia w rodowisku sprawdzone wersje, ktre s gotowe do uycia w rodowisku
produkcyjnym. Mylimy, e proces publikowania kolejnych wersji produkcyjnym. Mylimy, e proces publikowania kolejnych wersji
...@@ -521,20 +525,20 @@ ...@@ -521,20 +525,20 @@
PostgreSQL?</H4> PostgreSQL?</H4>
<P>PostgreSQL korzysta z najlepszej infrastruktury od samego pocztku <P>PostgreSQL korzysta z najlepszej infrastruktury od samego pocztku
istnienia projektu, tzn. szeciu lat. Wszystko to zawdziczamy Marc'owi istnienia projektu, czyli roku 1996 kiedy rozpoczelimy prac. Wszystko
Fournier'owi, ktry stworzy t infrastruktur i zarzdza ni od to zawdziczamy Marc'owi Fournier'owi, ktry stworzy t infrastruktur
lat.</P> i zarzdza ni od lat.</P>
<P>Wysokiej jakoci infrastruktura jest bardzo wana dla kadego <P>Wysokiej jakoci infrastruktura jest bardzo wana dla kadego
projektu open-source. Zapobiega przerwom w rozwoju projektu i projektu open-source. Zapobiega przerwom w rozwoju projektu i
jakimkolwiek przestojom.</P> jakimkolwiek przestojom.</P>
<P>Oczywicie korzystanie z wysokiej jakoci infrastruktury nie jest <P>Oczywicie korzystanie z wysokiej jakoci infrastruktury nie jest
tanie. Istnieje wiele rznych miesicznych, czy jednorazowych tanie. Istnieje wiele rnych miesicznych, czy jednorazowych
wydatkw, ktre trzeba ponosi aby wszystko dziaao jak naley. wydatkw, ktre trzeba ponosi aby wszystko dziaao jak naley.
Jeli Ty, bd Twoja firma moe wspomc finansowo rozwj PostgreSQL Jeli Ty, bd Twoja firma moe wspomc finansowo rozwj PostgreSQL
odwied adres: <A href= odwied adres: <A href=
"http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A> "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
gdzie opisane jest jak to zrobi.</P> gdzie opisane jest jak to zrobi.</P>
<P>Chocia na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" <P>Chocia na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"
...@@ -542,6 +546,9 @@ ...@@ -542,6 +546,9 @@
przeznaczane na finansowanie jakiejkolwiek firmy. Jeli wolisz, przeznaczane na finansowanie jakiejkolwiek firmy. Jeli wolisz,
moesz wysa czek na adres kontaktowy.</P> moesz wysa czek na adres kontaktowy.</P>
<HR> <HR>
Jeli moesz si pochwali udanymi wdroeniami PostgreSQL, prosimy
aby zgosi nam to na stronie: <A
href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</a>.
<H2 align="center">User Client Questions</H2> <H2 align="center">User Client Questions</H2>
...@@ -551,25 +558,21 @@ ...@@ -551,25 +558,21 @@
<P>Dostpne s dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC <P>Dostpne s dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC
i OpenLink <SMALL>ODBC</SMALL>.</P> i OpenLink <SMALL>ODBC</SMALL>.</P>
<P>PsqlODBC jest doczony do rde. Wicej informacji na jego temat <P>Moesz pobra PsqlODBC z adresu <A
moesz znale pod adresem: <A href= href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>
"ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A>.</P> </P>
<P>OpenLink <SMALL>ODBC</SMALL> moe by pobrany z adresu: <A href= <P>OpenLink <SMALL>ODBC</SMALL> moe by pobrany z adresu: <A href=
"http://www.openlinksw.com/">http://www.openlinksw.com</A>. "http://www.openlinksw.com/">http://www.openlinksw.com</A>.
Wsppracuje ze standardowym oprogramowaniem klienckim <SMALL>ODBC</SMALL> Wsppracuje ze standardowym oprogramowaniem klienckim <SMALL>ODBC</SMALL>
wic w ten sposb moesz korzysta z PostgreSQL <SMALL>ODBC</SMALL> wic w ten sposb moesz korzysta z PostgreSQL <SMALL>ODBC</SMALL>
dostpnego na kadej plaformie ktr wspiera (Win, Mac, Unix, VMS).</P> dostpnego na kadej pltaformie ktr wspiera (Win, Mac, Unix, VMS).</P>
<P>Autorzy bd prawdopodobnie sprzedawa ten produkt osobom ktre <P>Autorzy bd prawdopodobnie sprzedawa ten produkt osobom ktre
wymagaj komercyjnego wsparcia, ale wersja darmowa bdzie zawsze wymagaj komercyjnego wsparcia, ale wersja darmowa bdzie zawsze
dostpna. Wszystkie pytania moesz wysya na adres: <A href= dostpna. Wszystkie pytania moesz wysya na adres: <A href=
"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P> "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>
<P>Sprawd take rozdzia o <A href=
"http://www.postgresql.org/devel-corner/docs/programmer/odbc.html">ODBC
w "Programmer's Guide"</A>.</P>
<H4><A name="2.2">2.2</A>) Jakie istniej narzdzia pozwalajce na dostp do <H4><A name="2.2">2.2</A>) Jakie istniej narzdzia pozwalajce na dostp do
PostgreSQL przez www?</H4> PostgreSQL przez www?</H4>
...@@ -577,59 +580,56 @@ ...@@ -577,59 +580,56 @@
przez www moesz znale pod adresem: przez www moesz znale pod adresem:
<A href="http://www.webreview.com">http://www.webreview.com</A></P> <A href="http://www.webreview.com">http://www.webreview.com</A></P>
<P>Inny znajduje si pod adresem: <A href=
"http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P>
<P>Do integracji z www, wietnym rozwizaniem jest PHP. Moesz <P>Do integracji z www, wietnym rozwizaniem jest PHP. Moesz
znale wicej informacji na ten temat pod adresem znale wicej informacji na ten temat pod adresem
<A href="http://www.php.net">http://www.php.net</A>.</P> <A href="http://www.php.net">http://www.php.net</A>.</P>
<P>Wiele osb w przypadku skomplikowanych rozwiza uzywa Perl'a i <P>Wiele osb w przypadku skomplikowanych rozwiza uzywa Perl'a i
moduu CGI.pl.</P> moduu CGI.pl lub mod_perl.</P>
<H4><A name="2.3">2.3</A>) Czy istnieje jakie GUI dla PostgreSQL? <H4><A name="2.3">2.3</A>) Czy istnieje jakie GUI dla PostgreSQL?</H4>
Narzdzie do raportowania? Interfejs dla "embedded query
language"?</H4> <P>Tak, istnieje kilka interfejsw graficznych dla PostgreSQL.
Wrd nich PgAccess (<A href="http://www.pgaccess.org">
<P>Mamy cakiem miy interfejs graficzny, ktry zosta nazwany http://www.pgaccess.org</A>), PgAdmin III (<A
<I>pgaccess</I> i jest on dostarczany jako cz rde. href="http://www.pgadmin.org">http://www.pgadmin.org</A>),
<I>pgaccess</I> posiada take generator raportw. Mona go znale RHDB Admin (http://sources.redhat.com/rhdb/ ) oraz Rekall (
pod adresem <A href= http://www.thekompany.com/products/rekall/, komercyjny). Istnieje
"http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P> take PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), webowy
interfejs dla PostgreSQL.
<P>Udostpnilimy take <I>ecpg</I>, ktry jest "embedded SQL query </P>
language interface" dla jzyka C.</P> <P>
Wicej informacji na ten temat znajduje si pod adresem See
<H4><A name="2.4">2.4</A>) Za pomoc jakich jzykw programowania <A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.
<H4><A name="2.4">2.4</A>) Za pomoc jakich jzykw programowania
mona si komunikowa z PostgreSQL?</H4> mona si komunikowa z PostgreSQL?</H4>
<P>Mamy wsparcie dla:</P> <P>Najbardziej popularne jzyki posiiadaj wasny interfejs dla
PostgreSQL. Sprawd list rozszerze dla intersujcego Ciebie jzyka
programowania.</P>
<P>Ze rdami PostreSQL dystrubuowane s interfejsy dla
nastpujcych jzykw programowania:</P>
<UL> <UL>
<LI>C (libpq)</LI> <LI>C (libpq)</LI>
<LI>C++ (libpq++)</LI>
<LI>Embedded C (ecpg)</LI> <LI>Embedded C (ecpg)</LI>
<LI>Java (jdbc)</LI> <LI>Java (jdbc)</LI>
<LI>Perl (perl5)</LI>
<LI>ODBC (odbc)</LI>
<LI>Python (PyGreSQL)</LI> <LI>Python (PyGreSQL)</LI>
<LI>TCL (libpgtcl)</LI> <LI>TCL (libpgtcl)</LI>
<LI>C Easy API (libpgeasy)</LI>
<LI>Embedded <SMALL>HTML</SMALL> (<A href=
"http://www.php.net">PHP z http://www.php.net</A>)</LI>
</UL> </UL>
Inne interfejsy s dostpne pod adresem:
<A href="http://gborg.postgresql.org"> http://gborg.postgresql.org</A> w
sekcji Drivers/Interfaces.
<HR> <HR>
<H2 align="center">Pytania administratora</H2> <H2 align="center">Pytania dotyczce administracji</H2>
<H4><A name="3.1">3.1</A>) Jak mog zainstalowa PostgreSQL w innej <H4><A name="3.1">3.1</A>) Jak mog zainstalowa PostgreSQL w innej
lokalizacji ni <I>/usr/local/pgsql</I>?</H4> lokalizacji ni <I>/usr/local/pgsql</I>?</H4>
...@@ -677,7 +677,8 @@ ...@@ -677,7 +677,8 @@
<SMALL>SEMMNS</SMALL> i <SMALL>SEMMNI</SMALL> jdra twojego systemu.</P> <SMALL>SEMMNS</SMALL> i <SMALL>SEMMNI</SMALL> jdra twojego systemu.</P>
<P>Niedziaajce semafory mog spowodowa niepoprawne zamknicie <P>Niedziaajce semafory mog spowodowa niepoprawne zamknicie
systemu w czasie intensywnego korzystania z bazy.</P> systemu w czasie intensywnego korzystania z bazy.</P>
<P>Jeli tre bdu jest inna, moe to oznacza, e obsuga semaforw <P>Jeli tre bdu jest inna, moe to oznacza, e obsuga semaforw
nie zostaa wczona do jdra wcale. Zobacz PostgreSQL nie zostaa wczona do jdra wcale. Zobacz PostgreSQL
Administrator's Guide po bardziej szczegowe informacje o pamici Administrator's Guide po bardziej szczegowe informacje o pamici
...@@ -692,8 +693,7 @@ ...@@ -692,8 +693,7 @@
<I>postmaster'a</I>, <I>postmaster'a</I>,
<B>oraz</B> nie umoliwi si autoryzacji na podstawie adresu hostw <B>oraz</B> nie umoliwi si autoryzacji na podstawie adresu hostw
modyfikujc odpowiednio plik modyfikujc odpowiednio plik
<I>$PGDATA/pg_hba.conf</I>. To zmiany pozwol na <I>$PGDATA/pg_hba.conf</I>. To zmiany pozwol na poczenia TCP/IP.</P>
poczenia TCP/IP.</P>
<H4><A name="3.6">3.6</A>) Jak powinienem skonfigurowa system baz <H4><A name="3.6">3.6</A>) Jak powinienem skonfigurowa system baz
danych aby uzyska lepsz wydajno?</H4> danych aby uzyska lepsz wydajno?</H4>
...@@ -709,7 +709,7 @@ ...@@ -709,7 +709,7 @@
okrelajcym transakcj - <SMALL>BEGIN WORK/COMMIT</SMALL>, s okrelajcym transakcj - <SMALL>BEGIN WORK/COMMIT</SMALL>, s
traktowane jako pojedyncza transakcja. Rozwa wykonanie kilku traktowane jako pojedyncza transakcja. Rozwa wykonanie kilku
polece/zda SQL w jednym bloku transakcji. To redukuje narzut polece/zda SQL w jednym bloku transakcji. To redukuje narzut
powodowany przez transakcj. Przy duych zmianach w danych, warto nakadany przez transakcj. Przy duych zmianach w danych, warto
usun i stworzy na nowo indeksy.</P> usun i stworzy na nowo indeksy.</P>
<P>Jest kilka opcji pozwalajcych na poprawienie wydajnoci. <P>Jest kilka opcji pozwalajcych na poprawienie wydajnoci.
...@@ -825,19 +825,12 @@ ...@@ -825,19 +825,12 @@
maksymaln liczb procesw backendu to obawa o wyczerpanie zasobw maksymaln liczb procesw backendu to obawa o wyczerpanie zasobw
systemu.</P> systemu.</P>
<P>W wersjach PostgreSQL wczeniejszych ni 6.5, maksymalna liczba <H4><A name="3.9">3.9</A>) Jakie pliki znajduj si w <I>pg_temp</I>?</H4>
backendw bya ustawiona na 64, a zmiana tej wartoci wymaga
rekompliacji po zmianie staej MaxBackendId w pliku
<I>include/storage/sinvaladt.h</I>.</P>
<H4><A name="3.9">3.9</A>) Co to s za pliki typu: <P>Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
<I>pg_sorttempNNN.NN</I>, przykadu, jeli jaka operacja sortowania jest wymagana do wykonania
ktre znajduj si w katalogu z plikami bazy danych?</H4>
<P>S to tymczasowe pliki utworzone przez executor. Dla przykadu,
jeli jaka operacja sortowania jest wymagana do wykonania
<SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga wicej miejsca ni <SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga wicej miejsca ni
paratmetr backendu parametr backendu
<I>-S</I> ustawi do wykorzystania, wtedy tymczasowe pliki s uywane <I>-S</I> ustawi do wykorzystania, wtedy tymczasowe pliki s uywane
do przechowywania tych danych.</P> do przechowywania tych danych.</P>
...@@ -846,6 +839,25 @@ ...@@ -846,6 +839,25 @@
poprawnie podczas operacji sortowania. Jeli w danym momencie nie poprawnie podczas operacji sortowania. Jeli w danym momencie nie
dziaaj adne procesy backendw mozesz spokojnie usun pliki dziaaj adne procesy backendw mozesz spokojnie usun pliki
pg_tempNNN.NN.</P> pg_tempNNN.NN.</P>
<H4><A name="3.9">3.9</A>) Dlaczego konieczne jest przy upgradzie
PostgreSQL korzystanie ze skryptw dump i restore?</H4>
<P>
Twrcy PostgreSQL dokonuj jedynie maych zmian pomidzy maymi
upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
korzystania z dump i restore. Przy wikszych zmianach, np. z wersji
7.2 do 7.3, czsto zmianymaj wpyw na format przechowywanych danych.
Zmiany te s na tyle skomplikowane, e nie utrzymujemy zgodoci z
poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
takiej postaci, w ktrej atwe jest ich zaimportowanie do nowszych
wersji bez kopotu.
</P>
<P>
W wydaniach gdzie zmiany nie dotycz formatu danych na dysku, mona
wykorzysta skryptu pg_upgrade, do upgradu bez uycia dump/restore.
Dokumentacja do danego wydania zawiera informacj czy moliwe jest
uycie pg_upgrade.
</P>
<HR> <HR>
<H2 align="center">Pytania dotyczce uywania</H2> <H2 align="center">Pytania dotyczce uywania</H2>
...@@ -870,6 +882,15 @@ ...@@ -870,6 +882,15 @@
<SMALL>ORDER BY</SMALL>, PostgreSQL moe wykorzysta jedynie kilka <SMALL>ORDER BY</SMALL>, PostgreSQL moe wykorzysta jedynie kilka
pierwszych rzdw, by moe bdzie konieczno wykonania zapytania do pierwszych rzdw, by moe bdzie konieczno wykonania zapytania do
momentu a zostan znalezione podane wyniki.</P> momentu a zostan znalezione podane wyniki.</P>
<P>
Aby otrzyma losowy rzd, uyj:
<PRE>
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</PRE>
</P>
<H4><A name="4.3">4.3</A>) Jak mog uzyska list wszystkich tabel <H4><A name="4.3">4.3</A>) Jak mog uzyska list wszystkich tabel
czy innych rzeczy pod <I>psql</I>?</H4> czy innych rzeczy pod <I>psql</I>?</H4>
...@@ -881,37 +902,53 @@ ...@@ -881,37 +902,53 @@
<I>-E</I> wtedy po wykonaniu polecenia z backslashem wywietlane <I>-E</I> wtedy po wykonaniu polecenia z backslashem wywietlane
bdzie zapytanie, ktre w rzeczywistoci jest wykonywane.</P> bdzie zapytanie, ktre w rzeczywistoci jest wykonywane.</P>
<H4><A name="4.4">4.4</A>) Jak usun kolumn z tabeli?</H4> <H4><A name="4.4">4.4</A>) Jak usun kolumn z tabeli lub zmieni
jej typ?</H4>
<P>Nie mamy zaimplementowanego <SMALL>ALTER TABLE DROP
COLUMN,</SMALL> ale moesz zrobi tak:</P> <P>DROP COLUMNT zostao dodane w wersji 7.3 przy poleceniu ALTER
TABLE DROP COLUMN. We wczeiejszych wersjach moesz zrobi tak:
</P>
<PRE> <PRE>
SELECT ... -- wybierz zawarto wszystkich kolumn poza t jedn ktrej chcesz si pozby BEGIN;
LOCAL TABLE old_table;
SELECT ... -- wybierz wszystkie kolumny poza t jedn ktrej chcesz si pozby
INTO TABLE new_table INTO TABLE new_table
FROM old_table; FROM old_table;
DROP TABLE old_table; DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
</PRE> </PRE>
<P>
Aby zmieni typ danych kolumny moesz zrobi tak:
</P>
<PRE>
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
</PRE>
</P>
<H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzdu, <H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzdu,
tabeli i bazy danych?</H4> tabeli i bazy danych?</H4>
<P>Oto wszystkie ograniczenia:</P> <P>Oto wszystkie ograniczenia:</P>
<PRE> <PRE>
Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniej bazy danych o wielkoci 500 GB databases ) Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniej
Maksymalny rozmiar dla tabeli? 16 TB bazy danych o wielkoci 32 TB databases )
Maksymalny rozmiar dla rzdu? nieograniczony w 7.1 i pniejszych Maksymalny rozmiar dla tabeli? 32 TB
Maksymalny rozmiar pola? 1 GB w 7.1 and later Maksymalny rozmiar dla rzdu? 1.6 TB
Maksymalny rozmiar pola? 1 GB
Maksymalna liczba rzdw w tabeli? nieograniczona Maksymalna liczba rzdw w tabeli? nieograniczona
Maksymalna liczba kolumn w tabeli? 250-1600 w zaleonoci od typw kolumn Maksymalna liczba kolumn w tabeli? 250-1600 w zaleonoci od typw kolumn
Makasymalna liczba indeksw na tabeli? nieograniczona Makasymalna liczba indeksw na tabeli? nieograniczona
</PRE> </PRE>
Oczywicie "nieograniczony" nie jest prawd tak do koca, istniej Oczywicie "nieograniczony" nie jest prawd tak do koca, istniej
ograniczenia wynikajce z dostpnego miejsca na dysku, pamici/swapa. ograniczenia wynikajce z dostpnego miejsca na dysku, pamici/swapa.
Kiedy wielkoci te bd bardzo due moe odbi si to na wydajnoci. Kiedy wielkoci te bd bardzo due moe odbi si to na wydajnoci.
<P>Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu <P>Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
operacyjnego wsparcia dla duych plikw. Due tabele s przechowywane operacyjnego wsparcia dla duych plikw. Due tabele s przechowywane
jako pliki o rozmiarze 1 GB, wic ograniczenia co do wielkoci plikw jako pliki o rozmiarze 1 GB, wic ograniczenia co do wielkoci plikw
narzucone przez system plikw nie s istotne.</P> narzucone przez system plikw nie s istotne.</P>
...@@ -957,6 +994,9 @@ ...@@ -957,6 +994,9 @@
<P>Indeksy nie powoduj duego narzutu na zajmowane miejsce, <P>Indeksy nie powoduj duego narzutu na zajmowane miejsce,
ale zawieraj pewne dane, ale zawieraj pewne dane,
wic w pewnych przypadkach moga by cakiem due.</P> wic w pewnych przypadkach moga by cakiem due.</P>
<P> NULLe s przechowywane jako mapy bitowe, wic uywaj bardzo mao
miejsca.
</P>
<H4><A name="4.7">4.7</A>) Jak mog sprawdzi jakie tabele, klucze, <H4><A name="4.7">4.7</A>) Jak mog sprawdzi jakie tabele, klucze,
bazy danych i uytkownicy s utworzeni?</H4> bazy danych i uytkownicy s utworzeni?</H4>
...@@ -996,17 +1036,39 @@ ...@@ -996,17 +1036,39 @@
nastpuje sortowanie jest zazwyczaj szybsze ni wyszukiwanie za nastpuje sortowanie jest zazwyczaj szybsze ni wyszukiwanie za
pomoc indeksu na duej tabeli.</P> pomoc indeksu na duej tabeli.</P>
Jakkolwiek <SMALL>LIMIT</SMALL> w poczeniu z <SMALL>ORDER BY</SMALL> Jakkolwiek <SMALL>LIMIT</SMALL> w poczeniu z <SMALL>ORDER BY</SMALL>
czsto bdzie wykorzystywa indeksw poniewz jedynie maa czc z czsto bdzie wykorzystywa indeksy poniewa jedynie maa cz z
tabeli jest zwracana. tabeli jest zwracana. W rzeczywistoci, chocia MAX() i MIN() nie
uywaj indeksw, moliwe jest aby zwrci te wartoci uywajc
indeksw poprzez uycie ORDER BY i LIMIT.
</P>
<PRE>
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
</PRE>
<P>
Jeli uwaasz, e optimizer myli si wybierajc sequential scan, uyj
SET enable_seqscan TO 'off' i uruchom testy aby sprawdzi czy wtym
wypadku zapytanie bdzie szybciej wykonywane.
<P>Kiedy uywa si operatorw dopasujcych takich jak <P>Kiedy uywa si operatorw dopasujcych takich jak
<SMALL>LIKE</SMALL> lub <I>~</I>, indeksy bd uywane jedynie jeli <SMALL>LIKE</SMALL> lub <I>~</I>, indeksy bd uywane jedynie w
pocztek wyszukiwania jest oparty na pocztku acucha tekstu. pewnych wypadkach:</P>
Dlatego, aby uywac indeksw, <UL>
dopasowania operatorem <SMALL>LIKE</SMALL> nie mog si zaczyna <LI>Pocztek wyszukiwania jest oparty na pocztku acucha tekstu.
<I>%</I>, a dopasowania operatorem <I>~</I> (dopasowania regularne) <UL>
musz si zaczyna znakiem specjalnym <I>^</I>.</P> <LI>wzorce <SMALL>LIKE</SMALL> nie mog si zaczyna <I>%</I>
<LI>dopasowania operatorem <I>~</I> (dopasowania regularne)
musz si zaczyna znakiem specjalnym <I>^</I>.</P>
</UL>
<LI>Pocztek wyszukiwania nie moe si zaczyna od klas znakw, np.
[a-e].
<LI>Case-insensitive searches such as ILIKE and ~* do not utilise
indexes. Instead, use functional indexes, which are described in
section 4.12.
<LI>Standardowe locale C musi by uzyte przy wykonywaniu initdb
</UL>
<H4><A name="4.9">4.9</A>) Jak mog sprawdzi w jakis sposb "query <H4><A name="4.9">4.9</A>) Jak mog sprawdzi w jakis sposb "query
optimizer" wykonuje moje zapytanie?</H4> optimizer" wykonuje moje zapytanie?</H4>
...@@ -1051,15 +1113,14 @@ ...@@ -1051,15 +1113,14 @@
<H4><A name="4.12">4.12</A>) Jak mog uywa wyrae regularnych w <H4><A name="4.12">4.12</A>) Jak mog uywa wyrae regularnych w
zapytaniach i zapyta case-insensitive w wyraeniach zapytaniach i zapyta case-insensitive w wyraeniach
regularnych? regularnych?
jak korzysta z indeksw dla zapyta case-insensitive?</H4> Jak korzysta z indeksw dla zapyta case-insensitive?</H4>
<P>Operator <I>~</I> moze by wykorzystywany do wyszukiwania za <P>Operator <I>~</I> moze by wykorzystywany do wyszukiwania za
pomoc wyrae regularnych, a pomoc wyrae regularnych, a
<I>~*</I> do wyszukiwania case-insensitive z wyraeniami <I>~*</I> do wyszukiwania case-insensitive z wyraeniami
regularnymi. regularnymi.
Wariant case-insensitive dla <SMALL>LIKE</SMALL> zosta nazwany Wariant case-insensitive dla <SMALL>LIKE</SMALL> zosta nazwany
<SMALL>ILIKE</SMALL> i jest dostpny w PostgreSQL 7.1 i pniejszych <SMALL>ILIKE</SMALL>.</P>
wersjach.</P>
<P>Porwnania case-insensitive s zazwyczaj wykonywane w nastpujcy <P>Porwnania case-insensitive s zazwyczaj wykonywane w nastpujcy
sposb:</P> sposb:</P>
...@@ -1087,31 +1148,41 @@ ...@@ -1087,31 +1148,41 @@
<PRE> <PRE>
Type Nazwa wewntrzna Uwagi Type Nazwa wewntrzna Uwagi
-------------------------------------------------- --------------------------------------------------
"char" char 1 znak VARCHAR(n) varchar rozmiar okrela maksymaln dugo, nie ma tutaj wypeniania
CHAR(#) bpchar wypeniane pustymi znakami do podanej dugoci CHAR(n) bpchar wypeniane pustymi znakami do podanej dugoci
VARCHAR(#) varchar rozmiar okrela maksymaln dugo, nie ma tutaj wypeniania
TEXT text bez limitu na dugo acucha TEXT text bez limitu na dugo acucha
BYTEA bytea zmiennej dugoci tablica bajtw (null-byte safe) BYTEA bytea zmiennej dugoci tablica bajtw (null-byte safe)
"char" char 1 znak
</PRE> </PRE>
<P>Jeli bdziesz przeglda katalogi systemowe lub komunikaty o <P>Jeli bdziesz przeglda katalogi systemowe lub komunikaty o
bdach czsto spotkasz si z podanymi powyej nazwami bdach czsto spotkasz si z podanymi powyej nazwami
wewntrznymi.</P> wewntrznymi.</P>
<P>Ostatnie cztery typy powyej to tzw typy "varlena" (np. pierwsze <P>Pierwsze cztery typy powyej to tzw typy "varlena" (np. pierwsze
cztery bajty na dysku to dugo, po ktrych jest data). Dlatego cztery bajty na dysku to dugo, po ktrych jest data). Dlatego
faktyczna dugoc takiego acucha jest troch wiksza ni faktyczna dugoc takiego acucha jest troch wiksza ni
zadeklarowany rozmiar. Te typy take podlegaj kompresji lub mog by zadeklarowany rozmiar. Te typy take podlegaj kompresji lub mog by
przechowywane out-of-line jako <SMALL>TOAST</SMALL>, wic faktyczne przechowywane out-of-line jako <SMALL>TOAST</SMALL>, wic faktyczne
zuycie miejsca na dysku moe by mniejsze ni oczekiwane.</P> zuycie miejsca na dysku moe by mniejsze ni oczekiwane.</P>
<P><SMALL>CHAR()</SMALL> jast najlepszym typem do przechowywania <SMALL>VARCHAR(n)</SMALL> jest
acuchw o tej samej dugoci. <SMALL>VARCHAR()</SMALL> jest
najodpowiedniejszy do przechowywania acuchw o rnej dugoci najodpowiedniejszy do przechowywania acuchw o rnej dugoci
ale okrela on maksymaln jego dugo. <SMALL>TEXT</SMALL> jest ale okrela on maksymaln jego dugo.
najlepszy dla acuchw o dowolnej dugoci, nie przekraczajcej 1GB.
<SMALL>BYTEA</SMALL> suy do przechowywania danych binarnych, <SMALL>TEXT</SMALL> jest najlepszy dla acuchw o dowolnej dugoci,
w szczeglnoci dla danych zawierajcych <SMALL>NULL</SMALL> bajty.</P> nie przekraczajcej 1GB.</P>
<P>
<SMALL>CHAR(n)</SMALL> jast najlepszym typem do przechowywania
acuchw o tej samej dugoci. CHAR(n) wypenia dane do adanej
dugoci, podczas gdy VARCHAR(n) przechowuje jedynie dane
dostarczone.
<SMALL>BYTEA</SMALL> suy do przechowywania danych binarnych,
w szczeglnoci dla danych zawierajcych <SMALL>NULL</SMALL> bajty.
Wszystkie typy opisane tutaj maja podobne charakterystyki jeli
chodzi o wydajno.</P>
<H4><A name="4.15.1">4.15.1</A>) Jak mog utworzy pole ktre samo <H4><A name="4.15.1">4.15.1</A>) Jak mog utworzy pole ktre samo
zwiksza swoj warto?</H4> zwiksza swoj warto?</H4>
...@@ -1188,7 +1259,7 @@ BYTEA bytea zmiennej d ...@@ -1188,7 +1259,7 @@ BYTEA bytea zmiennej d
<H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie s <H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie s
ponownie uywane przy przerwaniu transakcji? ponownie uywane przy przerwaniu transakcji?
Skd si bior luki w numerowaniu kolumny tabeli Skd si bior luki w numerowaniu kolumny tabeli
sekwancjami/SERIALem?</H4> sekwancjami/SERIALem?</H4>
<P>Aby poprawi zbieno (concurrency), wartoci sekwencji s <P>Aby poprawi zbieno (concurrency), wartoci sekwencji s
...@@ -1197,8 +1268,7 @@ BYTEA bytea zmiennej d ...@@ -1197,8 +1268,7 @@ BYTEA bytea zmiennej d
numerowaniu z przerwanych transakcji.</P> numerowaniu z przerwanych transakcji.</P>
<H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to <H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to
jest jest <SMALL>TID</SMALL>?</H4>
<SMALL>TID</SMALL>?</H4>
<P><SMALL>OID</SMALL> s PostgreSQL'owym rozwizaniem problemu <P><SMALL>OID</SMALL> s PostgreSQL'owym rozwizaniem problemu
unikalnych numerw rzdw. Kady rzd tworzony przez PostgreSQL unikalnych numerw rzdw. Kady rzd tworzony przez PostgreSQL
...@@ -1274,15 +1344,15 @@ BYTEA bytea zmiennej d ...@@ -1274,15 +1344,15 @@ BYTEA bytea zmiennej d
</UL> </UL>
<P>List terminw zwizanych z bazami danych moesz znale pod tym <P>List terminw zwizanych z bazami danych moesz znale pod tym
adresem:<A href= adresem:<A
"http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P> href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.
<H4><A name="4.18">4.18</A>) Skd bierze si ten bd <I>"ERROR: <H4><A name="4.18">4.18</A>) Skd bierze si ten bd <I>"ERROR:
Memory exhausted in AllocSetAlloc()"</I>?</H4> Memory exhausted in AllocSetAlloc()"</I>?</H4>
<P>Jeli uywasz wersji starszej ni 7.1, upgrade moe rozwiza ten <P>
problem. Jest take mozliwe, e po prostu wyczerpaa Ci si pami Prawdopodobnie wyczerpaa Ci si pami wirtualna (virtual memory)
wirtualna (virtual memory) w systemie lub Twj kernel ma zbyt nisko w systemie lub Twj kernel ma zbyt nisko
ustawione limity dla pewnych zasobw. Sprbuj wykona nastpujce ustawione limity dla pewnych zasobw. Sprbuj wykona nastpujce
polecenia zanim uruchomisz <I>postmaster'a</I>:</P> polecenia zanim uruchomisz <I>postmaster'a</I>:</P>
<PRE> <PRE>
...@@ -1332,29 +1402,38 @@ BYTEA bytea zmiennej d ...@@ -1332,29 +1402,38 @@ BYTEA bytea zmiennej d
<H4><A name="4.22">4.22</A>) Dlaczego zapytania uywajce <H4><A name="4.22">4.22</A>) Dlaczego zapytania uywajce
<CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4> <CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4>
<P>Obecnie czymy podzapytania w outer queries poprzez sekwencyjne <P>W wersjach wczeniejszych ni 7.4 czymy podzapytania w outer queries
przeszukiwanie wynikw podzapytania dla kadego rzdu z outer query. poprzez sekwencyjne przeszukiwanie wynikw podzapytania dla kadego rzdu
Mona to omin zastpujc <CODE>IN</CODE> przez z outer query. Jeli podzapytanie zwraca jedynie kilka rzdw a
zewntrzne zapytanie zwraca ich wiele, IN jest najszybsze.
Aby przyspieszy inne zapytania mona zastpi <CODE>IN</CODE> przez
<CODE>EXISTS</CODE>:</P> <CODE>EXISTS</CODE>:</P>
<PRE> <PRE>
<CODE>SELECT * <CODE>SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col IN (SELECT subcol FROM subtab)
</CODE> </CODE>
</PRE> </PRE>
na: na:
<PRE> <PRE>
<CODE>SELECT * <CODE>SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
</CODE> </CODE>
</PRE> </PRE>
Mamy zamiar poprawi to ograniczenie w przyszych wydaniach. <P>
Aby to rozwizanie byo szybkie, subcol powinna by kolumn
indeksowan.
</P>
<P>
W wersji 7.4 i pniejszych, IN w rzeczywistoci uywa tej samej
wyrafinowanej techniki czenia jak normalne zapytania i jest
preferowane nad uywaniem EXISTS.
</P>
<H4><A name="4.23">4.23</A>) Jak wykona "outer join"?</H4> <H4><A name="4.23">4.23</A>) Jak wykona "outer join"?</H4>
<P>PostgreSQL 7.1 i pniejsze wersje maj zaimplementowane outer join <P>PostgreSQL ma zaimplementowane outer join
wykorzystujc standardow skadnie SQL. Poniej dwa przykady:</P> wykorzystujc standardow skadni SQL. Poniej dwa przykady:</P>
<PRE> <PRE>
SELECT * SELECT *
...@@ -1367,7 +1446,7 @@ BYTEA bytea zmiennej d ...@@ -1367,7 +1446,7 @@ BYTEA bytea zmiennej d
</PRE> </PRE>
<P>Te dwa identyczne zapytania cz kolumn t1.col z kolumn t2.col, <P>Te dwa identyczne zapytania cz kolumn t1.col z kolumn t2.col,
ale take zwrc niepoczone rzdy w t1 (te ktre nie pasuj w t2). ale take zwrc niepoczone rzdy w t1 (te, ktre nie pasuj w t2).
<SMALL>RIGHT</SMALL> join dodaby niepoczone rzdy z tabeli t2. <SMALL>RIGHT</SMALL> join dodaby niepoczone rzdy z tabeli t2.
<SMALL>FULL</SMALL> join zwrciby rzdy plus dodatkowo wszystkie <SMALL>FULL</SMALL> join zwrciby rzdy plus dodatkowo wszystkie
rzdy z tabel t1 i t2. Sowo <SMALL>OUTER</SMALL> jest opcjonalne i rzdy z tabel t1 i t2. Sowo <SMALL>OUTER</SMALL> jest opcjonalne i
...@@ -1401,19 +1480,63 @@ BYTEA bytea zmiennej d ...@@ -1401,19 +1480,63 @@ BYTEA bytea zmiennej d
katalogi systemowe, nie jest do koca jasne jak zapytanie pomidzy katalogi systemowe, nie jest do koca jasne jak zapytanie pomidzy
rnymi bazami danych powinno si zachowywa.</P> rnymi bazami danych powinno si zachowywa.</P>
<P>Oczywicie klient moe czy si z rnymi bazami danych i czy <P><I>contrib/dblink</I> pozwala na wykonywanie zapyta poprzez rne
informacj w ten sposb uzyskan.</P> bazy danych wywoujc odpowiednie funkcje. Oczywicie klient moe czy
si z rnymi bazami danych i czy informacj w ten sposb uzyskan
po stronie klienta.</P>
<H4><A name="4.25">4.25</A>) Jak zwrci w funkcji wiele rzdw lub <H4><A name="4.25">4.25</A>) Jak zwrci w funkcji wiele rzdw lub
kolumn?</H4> kolumn?</H4>
<P>Moesz zwraca zbiory z funkcji PL/pgSQL uywajc <P>Moesz w atwy sposb zwraca wiele rzdw lub kolumn uywajc
<i>refcursors</i>. Zobacz <a funkcji z: <A HREF="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</a>
sekcj 23.7.3.3.</P>
<H4><A name="4.26">4.26</A>) Dlaczego nie mog w sposb pewny
tworzy/usuwa tabel tymczasowych w funkcjach PL/PgSQL?</H4>
<P>
PL/PgSQL przechowuje w cache zawarto funkcji, niepodanym efektem tego
jest to, e gdy taka funkcja korzysta z tabel tymczasowych, ktre s
pniej kasowane i odtwarzane, a funkcja wywoywana jest ponownie,jej
wywoanie nie powiedzie si poniewa cachowana funkcja wci bdzie
wskazywa na stara tablic tymczasow. Rozwizaniem tego problemu jest
uywanie EXECUTE aby korzysta z tabel tymczasowych w PL/PgSQL. To
spowoduje, e zapytanie bdzie parsowane przy kadym wywoaniu
funkcji.
</P>
<H4><A name="4.27">4.27) Jakie s moliwoci replikacji w PostgreSQL?</H4>
<P>
Jest kilka opcji aby stosowa replikacj typu master/slave. Ten typ
pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
slave moe jedynie te zmiany odczytywa. Na stronie
<A
HREF="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
znajduje si ich lista. Replikacja typu multi-master jest w trakcie
prac, opis projektu znajduje si pod adresem: <A
HREF="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.
</P>
<H4><A name="4.28">4.28) Jakie moliwoci szyfrowania oferuje
PostgreSQL?</H4>
<P>
<UL>
<LI>contrib/pgcrypto zawiera wiele funkcji za pomoc, ktrych moemy uywa
kryptografii w zapytaniach SQL.
<LI>Aby szyfrowa transmisj od klienta do serwera, ten musi mie
ustawion opcj ssl na true w pliku postgresql.conf, odpowiedni
wpis host lub hostssl musi wystpowa w pliku pg_hba.conf, oraz
sslmode nie moe by wyczone w kliencie. (Warto zwrci uwag, e
moliwe jest take uywanie transportw szyfrujcw przez strony
trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
przez PostgreSQL).
<LI>Hasa uytkownikw bazy danych s automatycznie szyfrowane od
wersji 7.3. W poprzednich wersjach, naley t funkcjonalno poprzez
wczenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
<LI>Serwer moe dziaa uywajc szyfrowanego systemu plikw.
</UL>
</P>
<H2 align="center">Rozwijanie PostgreSQL</H2> <H2 align="center">Rozwijanie PostgreSQL</H2>
<H4><A name="5.1">5.1</A>) Napisaem wasn funkcj. Kiedy uyj jej <H4><A name="5.1">5.1</A>) Napisaem wasn funkcj. Kiedy uyj jej
...@@ -1432,8 +1555,12 @@ BYTEA bytea zmiennej d ...@@ -1432,8 +1555,12 @@ BYTEA bytea zmiennej d
<H4><A name="5.3">5.3</A>) Jak napisa funkcj C zwracajc krotk <H4><A name="5.3">5.3</A>) Jak napisa funkcj C zwracajc krotk
(tuple)?</H4> (tuple)?</H4>
<P>To wymaga wysiku tak olbrzymiego, e nawet autorzy nigdy tego nie <P>
prubowali, chocia z zaloe wynika, e jest to moliwe.</P> W wersjach PostgreSQL od numeru 7.3, funckje zwracajce tabele s w
plni wspierane w C, PL/PgSQL i SQL. Sprawd w Programmer's Guide aby
uzyska wicej informacji. Przykad funkcji napisanej w C zwracajcej
tabel zosta umieszczony w <I>contrib/tablefunc</I>.
</P>
<H4><A name="5.4">5.4</A>) Zmieniem plik rdowy. Dlaczego po <H4><A name="5.4">5.4</A>) Zmieniem plik rdowy. Dlaczego po
rekompilacji nie wida zmiany?</H4> rekompilacji nie wida zmiany?</H4>
...@@ -1443,6 +1570,8 @@ BYTEA bytea zmiennej d ...@@ -1443,6 +1570,8 @@ BYTEA bytea zmiennej d
<I>make clean</I>, a nastpnie ponownie <I>make</I>. <I>make clean</I>, a nastpnie ponownie <I>make</I>.
Jeli uywasz <SMALL>GCC</SMALL> moesz uy opcji Jeli uywasz <SMALL>GCC</SMALL> moesz uy opcji
<I>--enable-depend</I> przy wykonywaniu <I>configure</I> aby <I>--enable-depend</I> przy wykonywaniu <I>configure</I> aby
kompilator mg okreli zalenoci samodzielnie.
</P>
</BODY> </BODY>
</HTML> </HTML>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment