南乐县2017年第三批农村公路及桥梁建设项目招标公告
![]() Logo programu | |
![]() | |
Autor | PostgreSQL Global Development Group |
---|---|
Pierwsze wydanie | (dts) | 1 maja 1995
Aktualna wersja stabilna | 17.5 (8 maja 2025) [±] |
Aktualna wersja testowa | 18 beta 2 (17 lipca 2025) [±] |
J?zyk programowania | C |
Platforma sprz?towa | x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, SPARC, SPARC64, ARM, MIPS, MIPSEL, and PA-RISC |
System operacyjny | FreeBSD, OS X, Linux, Windows, UNIX (AIX, BSD, HP-UX, SGI IRIX, Solaris, Tru64) |
Rodzaj | relacyjny system baz danych |
Licencja | Licencja PostgreSQL |
Strona internetowa |
PostgreSQL (/po?stɡ? ?s kju? ?l/[1]), tak?e Postgres – obok MySQL i SQLite, jeden z najpopularniejszych[2][3] otwartych systemów zarz?dzania relacyjnymi bazami danych. Pocz?tkowo opracowywany na Uniwersytecie Kalifornijskim w Berkeley i opublikowany pod nazw? Ingres. 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. Aktualnie baza implementuje wi?kszo?? standardu SQL:2016[4].
Wi?kszo?? dystrybucji Linuksa zawiera pakiety umo?liwiaj?ce instalacj? bazy PostgreSQL. MacOS, od wersji Lion, posiada pakiety instalacyjne bazy w wersji serwerowej systemu operacyjnego oraz narz?dzia klienckie w wersji desktopowej.
PostgreSQL zalicza si? do baz typu RDBMS z rozszerzeniami obiektowymi.
Nazwa projektu
[edytuj | edytuj kod]U?ycie liter ró?nej wielko?ci w nazwie PostgreSQL prowadzi cz?sto do nieporozumień. Oficjaln? i jedyn? nazw? jest PostgreSQL. Cz?sto u?ywanym zdrobnieniem jest Postgres. Nazwa nawi?zuje do pocz?tków projektu jako ?post-Ingres”.
Platformy
[edytuj | edytuj kod]Systemy operacyjne
[edytuj | edytuj kod]PostgreSQL dzia?a na nast?puj?cych systemach operacyjnych: Linux (wszystkie niedawne dystrybucje), Windows (Win2000 SP4 i pó?niejszy), FreeBSD, OpenBSD, NetBSD, macOS, AIX, BSD/OS, HP-UX, IRIX, OpenIndiana, OpenSolaris, SCO OpenServer, SCO UnixWare, Solaris i Tru64 Unix.
W 2012 r. wsparcie dla nast?puj?cych systemów zosta?o usuni?te[5]: DG/UX, NeXTSTEP, SunOS 4, SVR4, Ultrix 4 oraz Univel.
W wi?kszo?ci pozosta?ych systemów Uniksowych i uniksopodobnych równie? powinna dzia?a?[6].
Architektury
[edytuj | edytuj kod]PostgreSQL dzia?a na architekturach sprz?towych takich jak: x86, x86-64, IA64 Itanium, PowerPC, PowerPC 64, S/390, S/390x, SPARC, SPARC 64, Alpha, ARM, MIPS, MIPSel, M68k, PA-RISC, M32R, NS32k i VAX. Dodatkowo mo?na zbudowa? PostgreSQLa dla niewspieranych procesorów poprzez wy??czenie spinlocków[6].
Cechy
[edytuj | edytuj kod]Funkcje
[edytuj | edytuj kod]W samej bazie mo?na pisa? procedury sk?adowane w ró?nych j?zykach programowania. Domy?lnie dost?pne s?:
- PL/pgSQL, podobny do proceduralnego j?zyka PL/SQL w bazie Oracle;
- PL/Python;
- PL/Perl;
- PL/Tcl;
- j?zyk SQL (procedura to ci?g parametryzowanych instrukcji SQL).
Dodatkowo mo?na zainstalowa? rozszerzenia udost?pniaj?ce:
- j?zyki skryptowe: PL/Lua, plPHP, PL/Ruby, PL/sh, PL/Scheme, PL/LOLCODE;
- j?zyki kompilowane: C, C++ oraz Java (jako PL/Java);
- j?zyk statystyczny R jako PL/R.
Indeksy
[edytuj | edytuj kod]W PostgreSQL zaimplementowano obs?ug? wielu typów indeksów[7], do których nale??:
- B-drzewo,
- Hash, u?ywany tylko przy korzystaniu z operatora =,
- GiST, obs?uguje ró?ne strategie indeksowania dla ró?nych danych np. zamiennik indeksu R-drzewo dla danych geometrycznych,
- SP-GiST,
- BRIN,
- GIN, stosowany do indeksowania wielu danych przetrzymywanych w jednej kolumnie[8].
Indeksy mo?na utworzy? zarówno na kolumnie, lub kolumnach tabeli, jak i widoku zmaterializowanego. Indeksy posiadaj? dodatkowe mo?liwo?ci:
- Indeksy funkcyjne, gdzie indeks jest wynikiem funkcji, a nie warto?ci kolumny.
- Indeksy cz??ciowe, czyli indeksy reprezentuj?ce cz??? tabeli, mog? zosta? utworzone przez dodanie klauzuli ?WHERE” na końcu CREATE INDEX.
- Ustawienie kolejno?ci sortowania warto?ci w indeksie malej?co (DESC), lub rosn?co (ASC).
- W razie potrzeby PostgreSQL mo?e przegl?da? indeksy od końca.
- Okre?lenie po?o?enia warto?ci NULL – na pocz?tku (FIRST) lub końcu indeksu (LAST).
- Wspó?bie?ne budowanie[9] i usuwanie[10] indeksu.
- Od wersji 8.1 mo?liwe jest ??czenie indeksów podczas wykonywania zapytania przy u?yciu tzw. bitmap indeksowych.
- Od wersji 9.2 mo?liwe s? index-only scany, dzi?ki temu baza wykonuj?c zapytanie mo?e korzysta? tylko z indeksu i z niego wyci?gn?? wszystkie dane potrzebne do zwrócenia. Umo?liwia to szybsze zapytania, bo nie trzeba przeszukiwa? pliku z danymi, a pliki z indeksami s? przewa?nie znacznie mniejsze.
Istnieje te? mo?liwo?? zaimplementowania w?asnego typu indeksu, który b?dzie u?ywany przez baz? danych.
Wyzwalacze
[edytuj | edytuj kod]Posiada mechanizm wyzwalaczy (ang. triggers). Wyzwalacze s? uruchamiane automatycznie przed lub po operacjach takich jak UPDATE, INSERT, DELETE i TRUNCATE. Do widoków mo?na u?y? mechanizmu regu? (ang. rules) by w ten sposób symulowa? mo?liwo?? zmieniania danych w widoku, który w PostgreSQL-u jest z zasady tylko do odczytu. Od wersji 9.1 mo?na tak?e tworzy? wyzwalacze na widokach.
Od wersji 9.3 mo?liwe jest tworzenie tzw. event triggers, wyzwalaczy reaguj?cych na instrukcje DDL, m.in. CREATE TABLE, CREATE INDEX, CREATE FUNCTION[11].
Wyzwalacz jest mechanizmem uruchamiaj?cym procedur?, która mo?e by? napisana w dowolnym j?zyku proceduralnym, który jest obs?ugiwany przez baz?, m.in. PL/SQL, PL/Perl, PL/Python lub PL/Tcl.
MVCC
[edytuj | edytuj kod]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.
Regu?y
[edytuj | edytuj kod]Regu?y s? to elementy aktywne, które mog? by? stosowane m.in. jako rozszerzenie widoków. Za pomoc? regu? mo?na zrealizowa? widoki modyfikuj?ce, jako ?e regu?y mog? mie? w definicji klauzul? INSTEAD OF co spowoduje, ?e robi?c zapytanie INSERT wstawiaj?ce dane do widoku, regu?a zamiast tego zapytania zrobi inne, które wstawi dane do tabeli (b?d? wielu tabel), z której widok odczytuje dane.
Typy danych
[edytuj | edytuj kod]Rozszerzona jest definicja typów danych o nowe typy m.in.:
- typ logiczny (boolean)
- typy liczbowe
- liczby ca?kowitych (smallint, integer, bigint)
- liczby zmiennoprzecinkowych (real, double precision)
- liczby nieca?kowite o dok?adnej reprezentacji (numeric, decimal)
- typy tekstowe (text, character alias char, character varying alias varchar)[12]
- typy binarne (bit, bit varying)
- typy do przechowywania daty i czasu (timestamp/time with/without timezone, date, interval)
- typ do obliczeń walutowych (money) – typ ten nie jest zalecany do u?ytku
- typ wyliczeniowy (enum)
- typ z?o?ony (rekordowy)
- typ tablicowy
- typy do wyszukiwania pe?notekstowego (tsvector, tsquery)
- typy geometryczne (point, line, lseg, box, path, polygon, circle)
- typy adresów sieciowych (cidr, inet, macaddr)
- XML, obs?uguj?cy równie? wyra?enia XPath (od wersji 8.3)
- UUID (od wersji 8.3)
- JSON (od wersji 9.2)
- typy zakresowe (Range Type) (od wersji 9.2)
Dodatkowo u?ytkownicy mog? definiowa? w?asne typy danych[13], 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.
Obiekty definiowane przez u?ytkownika
[edytuj | edytuj kod]Mo?na tworzy? wi?kszo?? obiektów bazodanowych m.in.:
- rzutowania
- konwersje typów
- typy danych
- domeny
- funkcje, w??czaj?c w to funkcje agreguj?ce
- indeksy, w??czaj?c w to indeksy dla definiowanych typów danych
- operatory, istniej?ce mog? by? nadpisane
- j?zyki proceduralne
Ograniczenia wielko?ci elementów bazy
[edytuj | edytuj kod]Nazwa ograniczenia | Warto?? |
---|---|
Maksymalny rozmiar bazy | bez ograniczeń |
Maksymalny rozmiar tabeli | 32 TB |
Maksymalny rozmiar wiersza | 1,6 TB |
Maksymalny rozmiar pola w wierszu | 1 GB |
Maksymalna liczba wierszy w tabeli | bez ograniczeń |
Maksymalna liczba kolumn w tabeli | 250 – 1600 (zale?y od rodzaju kolumn) |
Maksymalna liczba indeksów dla tabeli | bez ograniczeń |
Inne cechy
[edytuj | edytuj kod]Silnik ten zawiera wiele obiektowych rozszerzeń takich jak mo?liwo?? definiowania nowych typów podstawowych i dziedziczenia typów tablic.
Posiada zaawansowany system transakcji, dwufazowe zatwierdzanie (2PC) i mo?liwo?? dodawania funkcjonalno?ci m.in. dzi?ki modu?om zawartym w zbiorze ?contrib”.
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, FreeBSD, HP-UX, IRIX, Linux, Mac OS, Microsoft Windows, NetBSD, OpenBSD, Solaris i UnixWare.
PostgreSQL jest dost?pny na licencji Postgresql, podobnej do licencji BSD oraz licencji MIT
Narz?dzia do wspó?pracy z baz? danych
[edytuj | edytuj kod]- pgAdmin
- phpPgAdmin – administracja za pomoc? przegl?darki internetowej
- psql
- DBeaver
- TOra
- EMS SQL Manager for PostgreSQL Freeware
Historia
[edytuj | edytuj kod]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?cie 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 system 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 Stonebrakera, 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 firma Command Prompt, Inc. wyda?a Mammoth PostgreSQL, najstarsz? istniej?c? komercyjn? dystrybucj? PostgreSQL. Firma ta aktywnie wspiera do dzi? 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.
W roku 2005 PostgreSQL otrzyma? pe?ne wsparcie od firmy Pervasive Software, komercyjnego dostawcy rozwi?zań bazodanowych, znanego m.in. z produktu Btrieve, bardzo rozpowszechnionego na platformie Novell Netware. W mi?dzyczasie zaanga?owanie w projekt PostgreSQL zg?osi?a kolejna firma, EnterpiseDB. Firma ta zwraca?a szczególn? uwag? na dostosowanie PostgreSQL do wspó?pracy z aplikacjami specjalnie napisanymi dla Oracle. Natomiast firma Greenplum Inc. wspiera?a prace m.in. zmierzaj?ce do rozszerzenia mo?liwo?ci systemu przy u?ywaniu jako hurtownie danych, oraz wypu?ci?a system Bizgres bazuj?cy na PostgreSQL.
W listopadzie 2005 roku Sun Microsystems og?osi? oficjalne wsparcie dla PostgreSQL.
Znacz?cy u?ytkownicy
[edytuj | edytuj kod]- BASF, platforma zakupowa portalu agrobiznesowego[14]
- Mi?dzynarodowa Stacja Kosmiczna, do gromadzenia danych z orbity, nast?pnie replikowania jej na Ziemi[15]
- OpenStreetMap, projekt spo?eczno?ciowy udost?pniaj?cy darmow?, edytowaln? map? ca?ego ?wiata[16]
- Reddit, serwis internetowy zawieraj?cy informacje dodawane przez u?ytkowników[17]
- Skype, komunikator internetowy, g?ówna baza danych[18]
Nagrody i wyró?nienia
[edytuj | edytuj kod]Baza danych PostgreSQL jest cz?sto nagradzana przez u?ytkowników baz danych.
Niektóre wyró?nienia w poszczególnych latach:
- 1999 LinuxWorld Editor’s Choice Award for Best Database
- 2000 Linux Journal Editors’ Choice Awards for Best Database
- 2002 Linux New Media Editors Choice Award for Best Database
- 2003 Linux Journal Editors’ Choice Awards for Best Database
- 2004 Linux New Media Award For Best Database
- 2004 Linux Journal Editors’ Choice Awards for Best Database
- 2004 ArsTechnica Best Server Application Award
- 2005 Linux Journal Editors’ Choice Awards for Best Database
- 2006 Linux Journal Editors’ Choice Awards for Best Database
- 2008 Developer.com Product of the Year, Database Tool
- 2012 Linux New Media Award for Best Open Source Database[19]
Przypisy
[edytuj | edytuj kod]- ↑ przyk?ad d?wi?kowy, 5,6 kB MP3.
- ↑ Most popular database management systems 2022 [online], Statista [dost?p 2025-08-14] (ang.).
- ↑ DB-Engines Ranking [online], DB-Engines [dost?p 2025-08-14] (ang.).
- ↑ PostgreSQL: About [online], www.postgresql.org [dost?p 2025-08-14] .
- ↑ git.postgresql.org Git – postgresql.git/commitdiff [online], git.postgresql.org [dost?p 2025-08-14] (ang.).
- ↑ a b PostgreSQL: Documentation: 10: 16.6. Supported Platforms [online], www.postgresql.org [dost?p 2025-08-14] (ang.).
- ↑ Chapter 11. Indexes [online], PostgreSQL Documentation, 11 listopada 2021 [dost?p 2025-08-14] (ang.).
- ↑ The PostgreSQL Global Development Group: Create index. [dost?p 2025-08-14]. (ang.).
- ↑ The PostgreSQL Global Development Group: Building Indexes Concurrently. [dost?p 2025-08-14]. (ang.).
- ↑ The PostgreSQL Global Development Group: Drop Index. [dost?p 2025-08-14]. (ang.).
- ↑ The PostgreSQL Global Development Group: Event Trigger Firing Matrix. [dost?p 2025-08-14]. (ang.).
- ↑ Character Types. PostgreSQL Documentation. [dost?p 2025-08-14]. (ang.).
- ↑ Heikki Linnakangas: Writing a user-defined datatype. 2025-08-14. [dost?p 2025-08-14]. (ang.).
- ↑ Web Commerce Group: A Web Commerce Group Case Study on PostgreSQL. 2025-08-14. [dost?p 2025-08-14]. (ang.).
- ↑ Duncavage, Daniel: NASA needs Postgres – Nagios help. 2025-08-14. [dost?p 2025-08-14]. (ang.).
- ↑ Database. [dost?p 2025-08-14]. (ang.).
- ↑ Web Commerce Group: Architecture Overview. 2025-08-14. [dost?p 2025-08-14]. (ang.).
- ↑ Asko Oja: Database Tools by Skype. [dost?p 2025-08-14]. (ang.).
- ↑ Cebit 2012: Android, Libre Office und Samsung streichen Preise ein. www.linux-magazin.de, 2025-08-14. [dost?p 2025-08-14]. (niem.).
Bibliografia
[edytuj | edytuj kod]polska
[edytuj | edytuj kod]- ?Bazy danych i PostgreSQL od podstaw” (Richard Stones, Neil Matthew). ISBN 83-7197-650-X.
- Bruce Momjian , PostgreSQL, Henryk Westwalewicz, Wroc?aw: Robomatic, [cop. 2001], ISBN 83-87150-22-3, OCLC 749380251 .
- ?PostgreSQL” Wydanie II (Zdzis?aw Dybikowski). ISBN 978-83-246-3068-4.
- ?PostgreSQL, Praktyczny przewodnik” (John C. Worsley, Joshua D. Drake). ISBN 83-7197-754-9.
- ?PostgreSQL: receptury dla administratora” (Simon Riggs, Hannu Krosing). ISBN 978-83-246-3061-5.
- Gregory Smith , Wysoko wydajny PostgreSQL 9.0, Robert Górczyński (t?um.), Gliwice: Wydawnictwo Helion, 2011, ISBN 978-83-246-3062-2, OCLC 802762864 .
angloj?zyczna
[edytuj | edytuj kod]PostgreSQL 9.1 – 9.2
[edytuj | edytuj kod]- ?PostgreSQL: Up and Running” (Regina Obe, Leo Hsu). ISBN 1-4493-2633-1.
PostgreSQL 9
[edytuj | edytuj kod]- ?PostgreSQL 9 Administration Cookbook” (Simon Riggs, Hannu Krosing). ISBN 1-84951-028-8.
- ?PostgreSQL 9 High Performance” (Greg Smith). ISBN 1-84951-030-X.
PostgreSQL 8
[edytuj | edytuj kod]- ?Beginning PHP and PostgreSQL 8: From Novice to Professional” (W. Jason Gilmore, Robert Treat). ISBN 1-59059-547-5.
- Korry Douglas , PostgreSQL, Second edition, Indianapolis, Indiana, ISBN 0-672-32756-2, OCLC 61524548 .
- ?Beginning Databases with PostgreSQL, Second Edition” (Neil Matthew, Richard Stones). ISBN 1-59059-478-9.
PostgreSQL 7
[edytuj | edytuj kod]- ?Practical PostgreSQL” (John C. Worsley, Joshua D. Drake). ISBN 1-56592-846-6 (tak?e dost?pna online)
Linki zewn?trzne
[edytuj | edytuj kod]- Strona domowa PostgreSQL
- PostgreSQL Wiki
- Dokumentacja do stabilnych wersji PostgreSQL
- Dokumentacja do wersji deweloperskiej (aktualnie rozwijanej) PostgreSQL
- Old Planet PostgreSQL – stara strona agreguj?ca blogi o PostgreSQLu (do 4 stycznia 2011)
- Planet PostgreSQL – nowa strona agreguj?ca blogi o PostgreSQLu (od 4 stycznia 2011)
- Polska strona projektu – ostatnia aktualizacja 4 lutego 2008