PostgreSQL
Z Wikipedii
PostgreSQL | |
Rodzaj | relacyjny system baz danych |
Aktualna wersja | 8.1.5 - 16 października 2006 |
Pierwsze wydanie | 1 maja 1995 |
Producent | PostgreSQL Global Development Group |
Licencja | BSD |
Platforma systemowa | FreeBSD, Linux, Solaris, Windows |
Oficjalna witryna | www.postgresql.org |
PostgreSQL to, obok MySQL i Firebird, jeden z trzech najpopularniejszych wolnodostępnych systemów zarządzania relacyjnymi bazami danych. Początkowo opracowywany na Uniwersytecie Kalifornijskim w Berkeley i opublikowany pod nazwą Postgres. W miarę rozwoju i zwiększania funkcjonalności, baza danych otrzymała nazwy Postgres95 i ostatecznie PostgreSQL, aby upamiętnić pierwowzór oraz zaznaczyć zgodność ze standardem SQL.
PostgreSQL zalicza się do baz typu RDBMS, z rozszerzeniami obiektowymi.
Spis treści |
[edytuj] Cechy
[edytuj] Funkcje
W samej bazie można pisać procedury składowane w różnych językach programowania:
- wbudowany język PL/pgSQL podobny do proceduralnego języka PL/SQL w bazie Oracle
- języki skryptowe m.in. PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh, i PL/Tcl
- języki kompilowane C, C++, lub Java (jako PL/Java)
- język statystyczny R jako PL/R
[edytuj] Indeksy
W PostgreSQL zaimplementowano obsługę wielu typów indeksów takich jak B-drzewo, Hash, R-drzewo i GiST. Indeksy posiadają dodatkowe możliwości:
- indeksy funkcyjne, gdzie indeks powstaje poprzez wynik funkcji, a nie z wartości kolumny
- indeksy częściowe czyli indeksy reprezentujące część tabeli, mogą zostać utworzone poprzez dodanie klauzuli "WHERE" na końcu CREATE INDEX.
- w razie potrzeby PostgreSQL może przeglądać indeksy od końca
- od wersji 8.1 jest wsparcie dla indeksów bitmapowych.
[edytuj] Wyzwalacze
Posiada mechanizm wyzwalaczy. Wyzwalacze mogą być przyłączane do tabel lub widoków. Wyzwalacze mogą być definiowane w PL/pgSQL, PL/Perl, PL/Python lub PL/Tcl.
[edytuj] MVCC
PostgreSQL ma zaimplementowany mechanizm MVCC (Multiversion Concurrency Control) do zarządzania transakcjami. Mechanizm ten umożliwia udostępnienie tej samej krotki więcej niż jednej transakcji. Równocześnie może istnieć przynajmniej kilka wersji tej samej krotki, które nie są widoczne dla innych użytkowników do zakończenia danych transakcji. Dzięki temu baza danych wydajnie zachowuje zasadę ACID.
[edytuj] Reguły
Reguły są to elementy aktywne, stosowane jako rozszerzenie widoków. Za pomocą reguł można zrealizować widoki modyfikujące. Są szybsze niż wyzwalacze, ale posiadają mniejsze możliwości.
[edytuj] Typy danych
Rozszerzona jest definicja typów danych, o nowe typy, obejmujące m.in. obsługę:
- adresów IP i IPv6
- bloków CIDR i adresów MAC
- tablic
Dodatkowo użytkownicy mogą definiować własne typy danych, które całkowicie korzystają z infrastruktury GIST PostgreSQL. Doskonałym przykładem jest zdefiniowanie typów danych geograficznych na potrzeby systemów informacji geograficznej (GIS) w module PostGIS.
[edytuj] Obiekty definiowane przez użytkownika
Można tworzyć prawie większość obiektów bazodanowych m.in.:
- indeksy
- operatory
- agregaty
- domeny
- rzutowania
- konwersje
[edytuj] Inne cechy
Silnik ten zawiera wiele obiektowych rozszerzeń takich jak możliwość definiowania nowych typów podstawowych i dziedziczenia typów tablic.
Posiada zaawansowany system transakcji, możliwość dodawania funkcjonalności dzięki modułom zawartym w contribie.
Jednym z pierwszorzędnych celów twórców PostgreSQL jest jak największa zgodność ze standardem SQL.
PostgreSQL jest dostępny na platformy: AIX, DEC Unix, FreeBSD, HP-UX, Linux, Microsoft Windows, NetBSD, UnixWare, IRIX, Solaris, SunOS. Od 16 października 2006 aktualną wersją jest 8.1.5.
PostgreSQL jest dostępny na licencji BSD.
[edytuj] Narzędzia do współpracy z bazą danych
[edytuj] Historia
Historia rozwoju PostgreSQL sięga 1973 roku. Wtedy to dr Michael Stonebraker wraz z Eugene Wong rozpoczęli badania nad relacyjnymi systemami baz danych. Efektem tych badań było rozpoczęcia projektu Ingres na Uniwersytecie Kalifornijskim w Berkeley, w 1977 roku. Projekt prowadzony był pod kierunkiem dr Michaela Stonebrakera, który w 1982 roku opuścił uczelnię, zakładając firmę, która zajęła się skomercjalizowanym systemem Ingres. Jednak wkrótce, w 1984 roku wrócił na uczelnię.
W 1985 roku rozpoczęto pod kierunkiem prof. Michaela Stonebrakera prace badawcze nad projektem obiektowo-relacyjnej bazy danych Postgres (post-ingres). Postgres został wyposażony w zaawansowany język zapytań POSTQUEL. Następnie w 1987 roku wprowadzono do Postgresa reguły, procedury, typy i elementy obiektowe. Projekt ten był sponsorowany przez Defense Advanced Research Projects Agency (DARPA), Army Research Office (ARO), National Science Foundation (NSF) i ESL, Inc. Również ten projekt został skomercjalizowany, nadano mu nazwę Illustra. Ostatecznie komercyjny już system Illustra wykupiła firma Informix. Firma Informix użyła system Illustra w swoim produkcie Universal Server. W przeciwieństwie do projektu Ingres, projekt Postgres był nadal udoskonalany na uniwersytecie. Wersję oznaczoną numerem 1 opublikowano w czerwcu 1989 roku. Następnie w 1990 roku została opublikowana wersja 2, w której przepisano systemem reguł. Natomiast w 1991 roku ukazała się wersja 3 zawierająca m.in. przepisany na nowo systemem reguł i poprawiony silnik zapytań. Ostatnią wersją projektu Postgres była wersja 4.2, która nadal bazowała na języku zapytań POSTQUEL.
Dwaj absolwenci, członkowie zespołu Stonebraker'a, Andrew Yu i Jolly Chen w 1994 roku dodali interpreter języka SQL, zastępując język zapytań POSTQUEL. Projekt ten udostępniono na licencji BSD w maju 1995 roku jako Postgres95. Dalszą pracą nad projektem podjęła w 1996 roku społeczność Open Source, zmieniając nazwę projektu na PostgreSQL i tworząc organizację PostgreSQL Global Development Group do koordynacji rozwoju projektu. Zdecydowano się że nowa wersja będzie oznaczona numerem 6.0, jako następca Postgres95, którego można oznaczyć jako wersję 5.0 systemu macierzystego Postgres.
W 2001 Command Prompt, Inc. wydaje Mammoth PostgreSQL, najstarszą istniejącą komercyjną dystrybucję PostgreSQL. Firma ta aktywnie wspiera do dnia dzisiejszego społeczność PostgreSQL przez sponsorowanie programistów i projektów dotyczących m.in. PL/Perl, PL/php oraz hostuje dla projektu PostgreSQL Build Farm.
Natomiast w 2005 roku PostgreSQL otrzymuje pełne wsparcie od firmy Pervasive Software, komercyjnego dostawcy rozwiązań bazodanowych. Firma ta znana jest między innymi z produktu Betrieve, bardzo rozpowszechnionego na platformie Novell Netware. W międzyczasie zaangażowanie w projekt PostgreSQL zgłosiła kolejna firma EnterpiseDB. Firma ta zwraca szczególną uwagę na dostosowanie PostgreSQL do współpracy z aplikacjami specjalnie napisanymi dla Oracle. Natomiast firma Greenplum Inc. wspiera prace m.in. zmierzające do rozszerzenia możliwości systemu przy używaniu jako hurtownie danych, oraz wypuszcza system Bizgres bazujący na PostgreSQL.
W listopadzie 2005 roku Sun Microsystems ogłosił oficjalne wsparcie dla PostgreSQL.
8 listopada, 2005 roku zostaje wypuszczona wersja 8.1.
[edytuj] Znani użytkownicy
- Freshports
- Greenpeace
- BASF
- whitepages.com
- księgarnia IT Eyrolles
- okręgowy sąd Wisconsin replikowanych jest 6 * 180GB baz w czasie rzeczywistym
- [1] rejestracja domen .ORG
- Sony Online (artykuł z ComputerWorld) (20 marca 2006)
- Skype (PostgreSQL Users)
[edytuj] Literatura
[edytuj] polska
- "Bazy danych i PostgreSQL od podstaw" (Richard Stones, Neil Matthew). ISBN 83-7197-650-X
- "PostgreSQL" (Bruce Momjian). ISBN 83-87150-22-3
- "PostgreSQL, Praktyczny przewodnik" (John C. Worsley, Joshua D. Drake). ISBN 83-7197-754-9
[edytuj] angielska
- "Beginning Databases with PostgreSQL, Second Edition" (Neil Matthew, Richard Stones). ISBN 1590594789
- "Beginning PHP and PostgreSQL 8: From Novice to Professional" (W. Jason Gilmore, Robert Treat). ISBN 1590595475
- "Practical PostgreSQL" (John C. Worsley, Joshua D. Drake). ISBN 1565928466 (także dostępna online)
- "PostgreSQL" (Korry Douglas). ISBN 0672327562