PostgreSQL - PostgreSQL
Nejpokročilejší relační databáze s otevřeným zdrojovým kódem na světě[1] | |
Vývojáři | Globální rozvojová skupina PostgreSQL[2] |
---|---|
První vydání | 8. července 1996[3] |
Stabilní uvolnění | 13. 1. / 12. listopadu 2020[4] |
Úložiště | |
Napsáno | C |
Operační systém | FreeBSD, Linux, Operační Systém Mac, OpenBSD, Okna[5] |
Typ | RDBMS |
Licence | Licence PostgreSQL (zdarma a open-source, tolerantní )[6][7][8] |
webová stránka | postgresql |
Vydavatel | Globální rozvojová skupina PostgreSQL Vladaři z University of California |
---|---|
Kompatibilní s Debian FSG | Ano[9][10] |
FSF schválený | Ano[11] |
OSI schválený | Ano[8] |
GPL kompatibilní | Ano |
Copyleft | Ne |
Propojení z kódu s jinou licencí | Ano |
webová stránka | postgresql |
PostgreSQL (/ˈpoʊstɡrɛsˌkjuːˈɛl/),[12] také známý jako Postgres, je zdarma a open-source systém správy relačních databází (RDBMS) s důrazem rozšiřitelnost a Soulad s SQL. To bylo původně jmenoval POSTGRES, se odkazovat na jeho původ jako nástupce Ingres databáze vyvinutá na University of California, Berkeley.[13][14] V roce 1996 byl projekt přejmenován na PostgreSQL, aby odrážel jeho podporu pro SQL. Po kontrole v roce 2007 se vývojový tým rozhodl ponechat si název PostgreSQL a alias Postgres.[15]
Funkce PostgreSQL transakce s Atomicita, konzistence, izolace, trvanlivost Vlastnosti (ACID), automaticky aktualizovatelné pohledy, zhmotněné pohledy, spouští, cizí klíče, a uložené procedury.[16] Je navržen tak, aby zvládl celou řadu pracovních zátěží, od jednotlivých strojů až po datové sklady nebo webové služby s mnoha souběžných uživatelů. Je to výchozí databáze pro server macOS,[17][18][19] a je také k dispozici pro Linux, FreeBSD, OpenBSD, a Okna.
Dějiny
PostgreSQL se vyvinul z Ingres projekt na Kalifornské univerzitě v Berkeley. V roce 1982 vedoucí týmu Ingres, Michael Stonebraker, opustil Berkeley, aby vytvořil proprietární verzi Ingres.[13] V roce 1985 se vrátil do Berkeley a zahájil post-Ingres projekt zaměřený na řešení problémů se současnými databázovými systémy, které byly na počátku 80. let stále jasnější. Vyhrál Turing Award v roce 2014 pro tyto a další projekty,[20] průkopnické v nich.
Nový projekt POSTGRES si klade za cíl přidat nejméně funkcí potřebných k úplné podpoře typy dat.[21] Mezi tyto funkce patřila schopnost definovat typy a plně popsat vztahy - něco široce používaného, ale plně udržovaného uživatelem. V POSTGRES databáze porozuměla vztahům a mohla pomocí přirozeného způsobu načítat informace v souvisejících tabulkách pravidla. POSTGRES použil mnoho nápadů Ingresu, ale ne jeho kód.[22]
Počínaje rokem 1986 publikované práce popisovaly základ systému a prototypová verze byla představena na ACM 1988 SIGMOD Konference. Tým vydal verzi 1 pro malý počet uživatelů v červnu 1989, následovala verze 2 se systémem přepsaných pravidel v červnu 1990. Verze 3, vydaná v roce 1991, znovu přepsala systém pravidel a přidala podporu pro více správci úložiště[23] a vylepšený vyhledávací modul. Do roku 1993 začal počet uživatelů zahlcovat projekt žádostmi o podporu a funkce. Po vydání verze 4.2[24] dne 30. června 1994 - především očištění - projekt skončil. Berkeley vydal POSTGRES pod Licence MIT varianta, která umožnila ostatním vývojářům používat kód pro jakékoli použití. V té době POSTGRES používal Ingres-ovlivňoval Dotazovací jazyk POSTQUEL tlumočník, který lze interaktivně použít s a konzolová aplikace pojmenovaný monitor.
V roce 1994 postgraduální studenti Berkeley Andrew Yu a Jolly Chen nahradili interpreta dotazovacího jazyka POSTQUEL jedním pro dotazovací jazyk SQL a vytvořili Postgres95. monitor byl také nahrazen psql. Yu a Chen oznámili první verzi (0,01) beta testeři 5. května 1995. Verze 1.0 Postgres95 byla oznámena 5. září 1995 s liberálnější licencí, která umožňovala volně měnit software.
8. července 1996 poskytl Marc Fournier ze společnosti Hub.org Networking Services první neuniverzitní vývojový server pro vývojové úsilí open-source.[3] Za účasti Bruce Momjiana a Vadima B. Mikheeva začaly práce na stabilizaci kódu zděděného od Berkeleye.
V roce 1996 byl projekt přejmenován na PostgreSQL, aby odrážel jeho podporu pro SQL. Online přítomnost na webu PostgreSQL.org začala 22. října 1996.[25] První vydání PostgreSQL vytvořilo verzi 6.0 29. ledna 1997. Od té doby vývojáři a dobrovolníci z celého světa udržují software pod názvem The PostgreSQL Global Development Group.[2]
Projekt pokračuje v zpřístupňování verzí v rámci svého bezplatný open source software Licence PostgreSQL. Kód pochází z příspěvků od autorizovaných prodejců, společností poskytujících podporu a programátorů s otevřeným zdrojovým kódem.
Řízení multiversionové souběžnosti (MVCC)
PostgreSQL spravuje konkurence přes multiverzní řízení souběžnosti (MVCC), který dává každé transakci „snímek“ databáze, což umožňuje provádět změny bez ovlivnění dalších transakcí. To do značné míry eliminuje potřebu zámků pro čtení a zajišťuje údržbu databáze KYSELINA zásady. PostgreSQL nabízí tři úrovně izolace transakce: Číst potvrzené, opakovatelné čtení a serializovatelné. Protože PostgreSQL je imunní vůči špinavému čtení, požadavek na úroveň izolace transakcí bez potvrzení poskytuje místo toho potvrzené čtení. PostgreSQL podporuje plnou verzi serializovatelnost přes serializovatelný izolace snímků (SSI) metoda.[26]
Skladování a replikace
Replikace
PostgreSQL obsahuje vestavěnou binární replikaci založenou na odeslání změn (zápisy dopředu (WAL)) k asynchronní replikaci uzlů se schopností spouštět dotazy jen pro čtení proti těmto replikovaným uzlům. To umožňuje efektivní rozdělení provozu čtení mezi více uzlů. Dřívější replikační software, který umožňoval podobné škálování čtení, se obvykle spoléhal na přidání spouštěcích replikací do hlavní jednotky, což zvýšilo zatížení.
PostgreSQL obsahuje integrovanou synchronní replikaci[27] který zajišťuje, že pro každou transakci zápisu čeká hlavní server, dokud alespoň jeden uzel repliky nenapíše data do svého protokolu transakcí. Na rozdíl od jiných databázových systémů lze trvanlivost transakce (ať už je asynchronní nebo synchronní) určit na databázi, na uživatele, na relaci nebo dokonce na transakci. To může být užitečné pro pracovní vytížení, která nevyžadují takové záruky, a nemusí být požadována pro všechna data, protože zpomaluje výkon kvůli požadavku na potvrzení, že transakce dosáhne synchronního pohotovostního režimu.
Pohotovostní servery mohou být synchronní nebo asynchronní. Synchronní záložní servery lze určit v konfiguraci, která určuje, které servery jsou kandidáty na synchronní replikaci. První ze seznamu, který aktivně streamuje, bude použit jako aktuální synchronní server. Když se to nezdaří, systém selže na další v řadě.
Synchronní multi-master replikace není součástí jádra PostgreSQL. Postgres-XC, který je založen na PostgreSQL, poskytuje škálovatelnou synchronní multi-master replikaci.[28] Je licencován pod stejnou licencí jako PostgreSQL. Související projekt se nazývá Postgres-XL. Postgres-R je další Vidlička.[29] Bidirectional replication (BDR) is an asynchronous multi-master replication system for PostgreSQL.[30]
Nástroje, jako je repmgr, usnadňují správu klastrů replikace.
K dispozici je několik asynchronních balíčků replikace založených na aktivačních událostech. Ty zůstávají užitečné i po zavedení rozšířených základních schopností v situacích, kdy je binární replikace úplného databázového klastru nevhodná:
- Slony-I
- Londiste, součást programu SkyTools (vyvinutý společností Skype )
- Bucardo multi-master replikace (vyvinuta Backcountry.com )[31]
- SymetrickýDS multi-master, multi-tier replikace
YugabyteDB je databáze, která využívá rozhraní PostgreSQL s více NoSQL - jako backend. I když to lze považovat za jinou databázi, je to v zásadě PostgreSQL s jiným backendem úložiště. Řeší problémy replikace implementací nápadů z Google Spanner. Takovým databázím se říká NewSQL a zahrnout Šváb, a TiDB mezi ostatními.
Rejstříky
PostgreSQL obsahuje integrovanou podporu pro pravidelné B-strom a hash tabulka indexy a čtyři metody přístupu k indexům: zobecněné vyhledávací stromy (Podstata ), zobecněný obrácené indexy (GIN), Space-Partitioned GiST (SP-GiST)[32] a Indexy blokového rozsahu (BRIN). Kromě toho lze vytvořit uživatelsky definované metody indexu, i když je to docela zapojený proces. Indexy v PostgreSQL také podporují následující funkce:
- Indexy výrazů lze vytvořit s indexem výsledku výrazu nebo funkce, namísto jednoduše hodnoty sloupce.
- Částečné indexy, který indexuje pouze část tabulky, lze vytvořit přidáním klauzule WHERE na konec příkazu CREATE INDEX. To umožňuje vytvoření menšího indexu.
- Plánovač je schopen používat více indexů společně k uspokojení složitých dotazů pomocí dočasné paměti bitmapový index operace (užitečné pro datový sklad aplikace pro připojení k velkému tabulka faktů na menší dimenzionální tabulky jako jsou ty uspořádané v a hvězdné schéma ).
- k- nejbližší sousedé (k-NN) indexování (označované také jako KNN-GiST[33]) poskytuje efektivní vyhledávání „nejbližších hodnot“ k zadaným hodnotám, což je užitečné při hledání podobných slov nebo při zavírání objektů či umístění pomocí geoprostorové data. Toho je dosaženo bez vyčerpávajícího porovnávání hodnot.
- Skenování pouze na základě indexu často systému umožňuje načíst data z indexů, aniž by bylo nutné přistupovat k hlavní tabulce.
- Představen PostgreSQL 9.5 Indexy blokového rozsahu (BRIN).
Schémata
V PostgreSQL, a schéma obsahuje všechny objekty, kromě rolí a tabulkových prostorů. Schémata účinně fungují jako obory názvů, což umožňuje, aby objekty se stejným názvem koexistovaly ve stejné databázi. Ve výchozím nastavení mají nově vytvořené databáze schéma s názvem veřejnost, ale lze přidat další schémata a veřejné schéma není povinné.
A cesta_vyhledávání
nastavení určuje pořadí, ve kterém PostgreSQL kontroluje schémata pro nekvalifikované objekty (ty bez předponového schématu). Ve výchozím nastavení je nastavena na $ uživatel, veřejný
($ uživatel
odkazuje na aktuálně připojeného uživatele databáze). Toto výchozí nastavení lze nastavit na úrovni databáze nebo role, ale protože se jedná o parametr relace, lze jej během relace klienta libovolně měnit (i vícekrát), což ovlivňuje pouze tuto relaci.
Neexistující schémata uvedená v cestě hledání jsou během vyhledávání objektů tiše přeskočena.
Nové objekty se vytvářejí v jakémkoli platném schématu (takové, které v současné době existuje), které se zobrazí jako první v cestě hledání.
Typy dat
Široká škála domorodců typy dat jsou podporovány, včetně:
- Booleovský
- Libovolná přesnost numerické
- Znak (text, varchar, char)
- Binární
- Datum / čas (časové razítko / čas s / bez časového pásma, datum, interval)
- Peníze
- Výčet
- Bitové řetězce
- Typ textového vyhledávání
- Složený
- HStore, rozšíření umožňující ukládání klíčů a hodnot v rámci PostgreSQL[34]
- Pole (proměnná délka a mohou být jakéhokoli datového typu, včetně textových a složených typů) až do 1 GB v celkové velikosti úložiště
- Geometrické primitivy
- IPv4 a IPv6 adresy
- Beztřídní směrování mezi doménami (CIDR) bloky a MAC adresy
- XML vedlejší XPath dotazy
- Univerzálně jedinečný identifikátor (UUID)
- JavaScript Object Notation (JSON ) a rychlejší binární JSONB (není stejný jako BSON[35])
Uživatelé mohou navíc vytvářet vlastní datové typy, které lze obvykle plně indexovat pomocí indexovacích infrastruktur PostgreSQL - GiST, GIN, SP-GiST. Mezi příklady patří geografický informační systém (GIS) datové typy z PostGIS projekt pro PostgreSQL.
Existuje také datový typ s názvem a doména, který je stejný jako jakýkoli jiný datový typ, ale s volitelnými omezeními definovanými tvůrcem dané domény. To znamená, že všechna data zadaná do sloupce pomocí domény budou muset odpovídat jakýmkoli omezením, která byla definována jako součást domény.
Lze použít datový typ, který představuje rozsah dat, které se nazývají typy rozsahů. Mohou to být diskrétní rozsahy (např. Všechny celočíselné hodnoty 1 až 10) nebo spojité rozsahy (např. Kdykoli mezi nimi 10:00 ráno a 11:00 dopoledne). Dostupné typy rozsahů zahrnují rozsahy celých čísel, velkých celých čísel, desetinných čísel, časových razítek (s časovým pásmem i bez) a dat.
Lze vytvořit vlastní typy rozsahů, které zpřístupní nové typy rozsahů, jako jsou rozsahy adres IP využívající jako základ typ inet, nebo plovoucí rozsahy využívající jako základ datový typ float. Typy rozsahů podporují inkluzivní a exkluzivní hranice rozsahu pomocí [/] a (/) znaků. (např., [4,9)
představuje všechna celá čísla od 4 do včetně, ale ne 9.) Typy rozsahů jsou také kompatibilní se stávajícími operátory používanými ke kontrole překrytí, omezení, práva atd.
Uživatelem definované objekty
Lze vytvořit nové typy téměř všech objektů v databázi, včetně:
- Obsazení
- Převody
- Typy dat
- Datové domény
- Funkce, včetně agregačních funkcí a okenních funkcí
- Rejstříky včetně vlastních indexů pro vlastní typy
- Provozovatelé (stávající mohou být přetížený )
- Procedurální jazyky
Dědictví
Tabulky lze nastavit tak, aby zdědily jejich vlastnosti z a rodič stůl. Data v podřízených tabulkách se budou jevit jako existující v nadřazených tabulkách, pokud nebudou data vybrána z nadřazené tabulky pomocí POUZE klíčového slova, tj. VYBRAT * Z POUZE rodičovská_tabulka;
. Přidání sloupce do nadřazené tabulky způsobí, že se tento sloupec zobrazí v podřízené tabulce.
Dědičnost lze použít k implementaci dělení tabulky pomocí spouštěčů nebo pravidel k přímému vložení do nadřazené tabulky do správných podřízených tabulek.
Od roku 2010[Aktualizace], tato funkce ještě není plně podporována - zejména omezení tabulky nejsou aktuálně dědičná. Všechna kontrolní omezení a omezení s nulovou hodnotou v nadřazené tabulce jsou automaticky zděděna jejími potomky. Jiné typy omezení (jedinečná, primární klíč a omezení cizího klíče) nejsou zděděny.
Dědičnost poskytuje způsob, jak mapovat funkce hierarchií generalizace zobrazené v diagramy vztahů mezi entitami (ERD) přímo do databáze PostgreSQL.
Další funkce úložiště
- Referenční integrita omezení včetně cizí klíč omezení, sloupec omezení a kontroly řádků
- Binární a textové úložiště velkých objektů
- Tabulkové prostory
- Třídění podle sloupců
- Online zálohování
- Obnova typu point-in-time, implementovaná pomocí zápisu dopředu
- Místní upgrady s pg_upgrade pro menší prostoje (podporuje upgrady od 8.3.x[36] a později)
Ovládání a konektivita
Zahraniční datové obaly
PostgreSQL se může propojit s jinými systémy a načítat data pomocí cizích datových obalů (FDW).[37]Mohou mít formu jakéhokoli zdroje dat, například systému souborů, jiného relační databáze systém správy (RDBMS) nebo webová služba. To znamená, že běžné databázové dotazy mohou používat tyto zdroje dat, jako jsou běžné tabulky, a dokonce spojit více zdrojů dat dohromady.
Rozhraní
Pro připojení k aplikacím obsahuje PostgreSQL integrovaná rozhraní libpq (oficiální rozhraní aplikace C) a ECPG (zabudovaný systém C). Knihovny třetích stran pro připojení k PostgreSQL jsou k dispozici mnoha programovací jazyky, počítaje v to C ++,[38] Jáva,[39] Krajta,[40] Node.js,[41] Jít,[42] a Rez.[43]
Procedurální jazyky
Procedurální jazyky umožňují vývojářům rozšířit databázi o vlastní podprogramy (funkce), často nazývané uložené procedury. Tyto funkce lze použít k sestavení spouštěče databáze (funkce vyvolané při změně určitých údajů) a vlastní datové typy a agregační funkce.[44] Procedurální jazyky lze také vyvolat bez definice funkce pomocí příkazu DO na úrovni SQL.[45]
Jazyky jsou rozděleny do dvou skupin: Procedury napsané v bezpečný jazyky jsou pískoviště a může být bezpečně vytvořen a používán jakýmkoli uživatelem. Postupy napsané v nebezpečný jazyky mohou vytvořit pouze superuživatelé, protože umožňují obejít bezpečnostní omezení databáze, ale mohou také přistupovat ke zdrojům mimo databázi. Některé jazyky, jako je Perl, poskytují bezpečné i nebezpečné verze.
PostgreSQL má integrovanou podporu pro tři procedurální jazyky:
- Prostý SQL (bezpečný). Můžete získat jednodušší funkce SQL rozšířené vložené do volajícího (SQL) dotazu, který šetří režii volání funkce a umožňuje optimalizátoru dotazů „vidět dovnitř“ funkce.
- Procedurální jazyk / PostgreSQL (PL / pgSQL ) (bezpečný), který se podobá procedurálnímu jazyku Oracle pro SQL (PL / SQL ) procedurální jazyk a SQL / trvalé uložené moduly (SQL / PSM ).
- C (nebezpečné), což umožňuje načíst jeden nebo více vlastních sdílená knihovna do databáze. Funkce napsané v C nabízejí nejlepší výkon, ale chyby v kódu mohou selhat a potenciálně poškodit databázi. Většina vestavěných funkcí je napsána v jazyce C.
Navíc PostgreSQL umožňuje načítání procedurálních jazyků do databáze pomocí rozšíření. PostgreSQL obsahuje tři jazyková rozšíření, která je podporují Perl, Krajta (ve výchozím nastavení možný Python 2 nebo Python 3 možný)[46] a Tcl. Existují externí projekty, které přidávají podporu pro mnoho dalších jazyků,[47] počítaje v to Jáva, JavaScript (PL / V8), R (PL / R)[48], Rubín, a další.
Spouštěče
Spouštěče jsou události spouštěné akcí SQL jazyk pro manipulaci s daty (DML) prohlášení. Například an VLOŽIT příkaz může aktivovat spouštěč, který ověří, zda jsou hodnoty příkazu platné. Většina spouštěčů je aktivována pouze INSERT nebo AKTUALIZACE prohlášení.
Spouštěče jsou plně podporovány a lze je připojit ke stolům. Spouštěče mohou být pro každý sloupec a podmíněné, protože spouštěče UPDATE mohou cílit na konkrétní sloupce tabulky a spouštěčům lze říci, aby se spouštěly za podmínek, které jsou uvedeny v klauzuli WHERE spouštěče. Spouštěče lze připojit pohledy použitím podmínky INSTEAD OF. Spouští se více spouštěčů v abecedním pořadí. Kromě volání funkcí napsaných v nativním PL / pgSQL mohou spouštěče také vyvolat funkce napsané v jiných jazycích, jako je PL / Python nebo PL / Perl.
Asynchronní oznámení
PostgreSQL poskytuje asynchronní systém zasílání zpráv, ke kterému se přistupuje prostřednictvím příkazů NOTIFY, LISTEN a UNLISTEN. Relace může vydat příkaz NOTIFY spolu s uživatelem zadaným kanálem a volitelným užitečným zatížením k označení konkrétní události, která nastane. Ostatní relace jsou schopny detekovat tyto události vydáním příkazu LISTEN, který může poslouchat konkrétní kanál. Tuto funkcionalitu lze použít k nejrůznějším účelům, například k informování ostatních relací, když se tabulka aktualizovala, nebo pro samostatné aplikace, aby detekovaly, kdy byla provedena konkrétní akce. Takový systém brání potřebě nepřetržitého provozu hlasování aplikacemi, aby se zjistilo, zda se něco ještě nezměnilo, a snižování zbytečné režie. Oznámení jsou plně transakční, protože zprávy se neposílají, dokud není potvrzena transakce, ze které byly odeslány. To eliminuje problém zpráv odesílaných pro prováděnou akci, která je poté vrácena zpět.
Mnoho konektorů pro PostgreSQL poskytuje podporu pro tento oznamovací systém (včetně libpq, JDBC, Npgsql, psycopg a node.js), takže jej mohou používat externí aplikace.
PostgreSQL může fungovat jako efektivní a vytrvalý "pub / sub" server nebo server úloh kombinací LISTEN s FOR UPDATE SKIP LOCKED,[49] kombinace, která existuje od PostgreSQL verze 9.5[50][51]
Pravidla
Pravidla umožňují přepsat „strom dotazů“ příchozího dotazu. „Pravidla přepisování dotazů“ jsou připojena k tabulce / třídě a „přepisují“ příchozí DML (výběr, vkládání, aktualizace a / nebo mazání) do jednoho nebo více dotazů, které buď nahradí původní příkaz DML, nebo se spustí v kromě toho. K opětovnému zápisu dotazu dojde po analýze příkazu DML, ale před plánováním dotazu.
Další funkce dotazování
- Transakce
- Fulltextové vyhledávání
- Pohledy
- Vnitřní, vnější (plný, levý a pravý) a kříž připojí se
- Sub-vybírá
- Související poddotazy[55]
- Regulární výrazy[56]
- běžné tabulkové výrazy a zapisovatelné běžné tabulkové výrazy
- Šifrovaná připojení prostřednictvím Zabezpečení transportní vrstvy (TLS); aktuální verze nepoužívají zranitelné SSL, a to ani s touto možností konfigurace[57]
- Domény
- Uložené body
- Dvoufázové potvrzení
- Oversized-Attribute Storage Technique (TOAST) se používá k transparentnímu ukládání velkých atributů tabulky (jako jsou velké přílohy MIME nebo zprávy XML) v samostatné oblasti s automatickou kompresí.
- Vestavěný SQL je implementováno pomocí preprocesoru. Kód SQL je nejprve zapsán do kódu C. Potom je kód spuštěn přes preprocesor ECPG, který nahradí SQL voláními do knihovny kódů. Potom lze kód kompilovat pomocí kompilátoru C. Vkládání funguje také s C ++ ale nerozpozná všechny konstrukce C ++.
Model souběžnosti
Server PostgreSQL je proces -based (bez vláken) a používá jeden proces operačního systému na relaci databáze. Operační systém automaticky rozloží více relací mezi všechny dostupné CPU. Počínaje PostgreSQL 9.6 lze mnoho typů dotazů také paralelizovat napříč několika pracovními procesy na pozadí, s využitím výhod více CPU nebo jader.[58] Klientské aplikace mohou používat vlákna a vytvářet více databázových připojení z každého vlákna.[59]
Bezpečnostní
PostgreSQL spravuje interní zabezpečení per-role základ. Za roli se obecně považuje uživatel (role, která se může přihlásit), nebo skupina (role, jejíž členy jsou další role). Oprávnění lze udělit nebo zrušit jakémukoli objektu až na úroveň sloupce a může také umožnit / zabránit vytváření nových objektů na úrovni databáze, schématu nebo tabulky.
Funkce PostgreSQL SECURITY LABEL (rozšíření standardů SQL) umožňuje další zabezpečení; s dodávaným načtitelným modulem, který podporuje štítky povinná kontrola přístupu (MAC) na základě Zabezpečený systém Linux (SELinux) bezpečnostní politika.[60][61]
PostgreSQL nativně podporuje širokou škálu externích autentizačních mechanismů, včetně:
- Heslo: buď SCRAM-SHA-256 (od PostgreSQL 10[62]), MD5 nebo prostý text
- Obecné rozhraní aplikačního programu služby zabezpečení (GSSAPI)
- Rozhraní poskytovatele podpory zabezpečení (SSPI)
- Kerberos
- ident (mapuje O / S uživatelské jméno poskytnuté serverem ident na databázové uživatelské jméno)
- Peer (mapuje místní uživatelské jméno na uživatelské jméno databáze)
- Lightweight Directory Access Protocol (LDAP)
- Aktivní adresář (INZERÁT)
- POLOMĚR
- Osvědčení
- Zásuvný ověřovací modul (PAM)
Metody GSSAPI, SSPI, Kerberos, peer, ident a certificate mohou také používat specifikovaný soubor „mapy“, který uvádí seznam uživatelů, kterým tento systém ověřování umožňuje připojení jako konkrétního uživatele databáze.
Tyto metody jsou uvedeny v konfiguračním souboru ověřování na základě hostitele clusteru (pg_hba.conf), který určuje, která připojení jsou povolena. To umožňuje kontrolu nad tím, který uživatel se může připojit ke které databázi, odkud se může připojit (IP adresa, rozsah IP adres, soket domény), který ověřovací systém bude vynucen a zda musí připojení používat Zabezpečení transportní vrstvy (TLS).
Soulad s normami
PostgreSQL tvrdí vysokou, ale ne úplnou shodu se standardem SQL. Jedinou výjimkou je zpracování nekótovaných identifikátorů, jako jsou názvy tabulek nebo sloupců. V PostgreSQL jsou interně složeny na malá písmena[63] zatímco norma říká, že nekótované identifikátory by měly být složeny na velká písmena. Tím pádem, Foo
by měl odpovídat FOO
ne foo
podle normy.
Srovnávací hodnoty a výkon
Bylo provedeno mnoho neformálních studií výkonu PostgreSQL.[64] Vylepšení výkonu zaměřené na zlepšení škálovatelnosti začala těžce s verzí 8.1. Jednoduché srovnávací testy mezi verzí 8.0 a verzí 8.4 ukázaly, že tato verze byla více než 10krát rychlejší u úloh jen pro čtení a nejméně 7,5krát rychlejší u úloh pro čtení i zápis.[65]
První průmyslový standard a vzájemně ověřené měřítko bylo dokončeno v červnu 2007 pomocí serveru Sun Java System Application Server (proprietární verze GlassFish ) 9.0 Platform Edition, UltraSPARC T1 -na základě Sluneční oheň server a PostgreSQL 8.2.[66] Tento výsledek 778.14 SPECjAppServer2004 JOPS @ Standard je příznivě srovnatelný s 874 JOPS @ Standard s Oracle 10 na Itanium -na základě HP-UX Systém.[64]
V srpnu 2007 společnost Sun předložila vylepšené srovnávací skóre 813,73 SPECjAppServer2004 JOPS @ Standard. S testovaný systém za sníženou cenu se cena / výkon zlepšil z 84,98 USD / JOPS na 70,57 USD / JOPS.[67]
Výchozí konfigurace PostgreSQL používá pouze malé množství vyhrazené paměti pro účely kritické pro výkon, jako je ukládání do mezipaměti databázových bloků a třídění. Toto omezení je primárně proto, že starší operační systémy vyžadovaly změny jádra, aby bylo možné přidělit velké bloky sdílená paměť.[68] PostgreSQL.org poskytuje rady ohledně základních doporučených postupů výkonu v a wiki.[69]
V dubnu 2012 Robert Haas z EnterpriseDB demonstroval lineární škálovatelnost CPU PostgreSQL 9.2 pomocí serveru s 64 jádry.[70]
Matloob Khushi provedl benchmarking mezi Postgresql 9.0 a MySQL 5.6.15 pro jejich schopnost zpracovávat genomická data. Ve své analýze výkonu zjistil, že PostgreSQL extrahuje překrývající se genomové oblasti osmkrát rychleji než MySQL pomocí dvou datových sad po 80 000, z nichž každá tvoří náhodné oblasti lidské DNA. Vkládání a nahrávání dat v PostgreSQL bylo také lepší, i když obecná vyhledávací schopnost obou databází byla téměř stejná.[71]
Platformy
PostgreSQL je k dispozici pro následující operační systémy: Linux (všechny nedávné distribuce), 64bitové instalační programy dostupné pro Operační Systém Mac (OS X)[19] verze 10.6 a novější - Okna (s instalačními programy dostupnými pro 64bitovou verzi; testováno na nejnovějších verzích a zpět na Windows 2012 R2,[72] zatímco pro PostgreSQL verze 10 a starší je k dispozici 32bitový instalační program, který je testován až na 32bitový Windows 2008 R1; kompilace např. Vizuální studio, verze 2013 až po nejnovější verzi z roku 2019) - FreeBSD, OpenBSD,[73] NetBSD, AIX, HP-UX, Solaris, a UnixWare; a není oficiálně testováno: DragonFly BSD, BSD / OS, IRIX, OpenIndiana,[74] OpenSolaris, OpenServer, a Tru64 UNIX. Většina ostatních unixových systémů by také mohla fungovat; nejmodernější podpora.
PostgreSQL funguje na kterémkoli z následujících architektury instrukční sady: x86 a x86-64 na Windows a dalších operačních systémech; tyto jsou podporovány v jiných než Windows: IA-64 Itanium (externí podpora pro HP-UX), PowerPC, PowerPC 64, S / 390, S / 390x, SPARC, SPARC 64, ARMv8 -A (64-bit )[75] a starší PAŽE (32-bit, včetně starších, jako je ARMv6 v Raspberry Pi[76]), MIPS, MIPSel a PA-RISC. Bylo také známo, že funguje na některých jiných platformách (i když nebyly roky testovány, tj. Pro nejnovější verze).[77]
Správa databáze
Mezi otevřená rozhraní a nástroje pro správu PostgreSQL patří:
- psql
- Primární front-end pro PostgreSQL je
psql
program příkazového řádku, které lze použít k přímému zadání dotazů SQL nebo k jejich provedení ze souboru. Kromě toho psql poskytuje řadu meta příkazů a různé funkce podobné shellu, které usnadňují psaní skriptů a automatizaci nejrůznějších úkolů; například vyplňování záložek názvy objektů a syntaxe SQL. - pgAdmin
- Balíček pgAdmin je bezplatný a otevřený zdroj grafické uživatelské prostředí (GUI) administrační nástroj pro PostgreSQL, který je podporován na mnoha počítačových platformách.[78] Program je k dispozici ve více než tuctu jazyků. První prototyp s názvem pgManager byl napsán pro PostgreSQL 6.3.2 z roku 1998 a v pozdějších měsících byl přepsán a vydán jako pgAdmin pod GNU General Public License (GPL). Druhá inkarnace (pojmenovaná pgAdmin II) byla úplným přepsáním, poprvé vydána 16. ledna 2002. Třetí verze, pgAdmin III, byla původně vydána pod Umělecká licence a poté vydána pod stejnou licencí jako PostgreSQL. Na rozdíl od předchozích verzí, které byly napsány v Visual Basic, pgAdmin III je napsán v C ++ pomocí wxWidgets[79] rámec umožňující jeho provoz na nejběžnějších operačních systémech. Dotazovací nástroj obsahuje skriptovací jazyk zvaný pgScript pro podporu administrátorských a vývojových úkolů. V prosinci 2014 Dave Page, zakladatel a primární vývojář projektu pgAdmin,[80] oznámila, že s přechodem k webovým modelům začala práce na pgAdmin 4 s cílem usnadnit cloudové nasazení.[81] V roce 2016 byl vydán pgAdmin 4. backgend pgAdmin 4 byl napsán Krajta pomocí baňky a Rámec Qt.[82]
- phpPgAdmin
- phpPgAdmin je webový administrační nástroj pro PostgreSQL napsaný v PHP a založený na populárním phpMyAdmin rozhraní původně napsané pro MySQL správa.[83]
- PostgreSQL Studio
- PostgreSQL Studio umožňuje uživatelům provádět základní úlohy vývoje databáze PostgreSQL z webové konzoly. PostgreSQL Studio umožňuje uživatelům pracovat s cloudovými databázemi bez nutnosti otevírat brány firewall.[84]
- TeamPostgreSQL
- AJAX / JavaScriptové webové rozhraní pro PostgreSQL. Umožňuje procházení, údržbu a vytváření datových a databázových objektů prostřednictvím webového prohlížeče. Rozhraní nabízí editor SQL s kartami s automatickým doplňováním, widgety pro úpravy řádků, proklikání navigace cizím klíčem mezi řádky a tabulkami, oblíbené správa běžně používaných skriptů, mimo jiné funkce. Podporuje SSH pro webové rozhraní i pro připojení k databázi. Instalační programy jsou k dispozici pro Windows, Macintosh a Linux a jednoduchý archiv pro různé platformy, který běží ze skriptu.[85]
- LibreOffice, OpenOffice.org
- LibreOffice a OpenOffice.org Base lze použít jako front-end pro PostgreSQL.[86][87]
- pgBadger
- Analyzátor protokolu pgBadger PostgreSQL generuje podrobné zprávy ze souboru protokolu PostgreSQL.[88]
- pgDevOps
- pgDevOps je sada webových nástrojů pro instalaci a správu více verzí, rozšíření a komunitních komponent PostgreSQL, vývoj dotazů SQL, sledování běžících databází a hledání problémů s výkonem.[89]
- Správce
- Správce je jednoduchý webový administrační nástroj pro PostgreSQL a další, napsaný v PHP.
- pgBackRest
- pgBackRest je nástroj pro zálohování a obnovení pro PostgreSQL, který poskytuje podporu pro úplné, rozdílové a přírůstkové zálohy.[90]
- pgaudit
- pgaudit je rozšíření PostgreSQL, které poskytuje podrobné protokolování relací a / nebo objektů prostřednictvím standardního protokolovacího nástroje poskytovaného PostgreSQL.[91]
- Wal-e
- Wal-e je nástroj pro zálohování a obnovení pro PostgreSQL, který poskytuje podporu pro fyzické zálohy (založené na WAL), napsané v Pythonu[92]
Řada společností nabízí proprietární nástroje pro PostgreSQL. Často se skládají z univerzálního jádra, které je přizpůsobeno pro různé konkrétní databázové produkty. Tyto nástroje většinou sdílejí funkce správy s nástroji open source, ale nabízejí vylepšení v modelování dat, import, export nebo hlášení.
Pozoruhodní uživatelé
Pozoruhodné organizace a produkty, které používají PostgreSQL jako primární databázi, zahrnují:
- V roce 2009 web sociálních sítí Moje místo použitý Datové systémy Aster Databáze nCluster pro datové sklady, která byla postavena na nemodifikovaném PostgreSQL.[93][94]
- Geni.com používá PostgreSQL pro svou hlavní genealogickou databázi.[95]
- OpenStreetMap, projekt spolupráce na vytvoření bezplatné editovatelné mapy světa.[96]
- Afilias, registry domén pro .org, .info a další.[97][98]
- Sony Online online hry pro více hráčů.[99]
- BASF, nákupní platforma pro jejich portál pro zemědělství.[100]
- Reddit sociální zpravodajský web.[101]
- Skype Aplikace VoIP, centrální podnikání databáze.[102]
- Slunce xVM, Sada virtualizace a automatizace datových center společnosti Sun.[103]
- MusicBrainz, otevřená encyklopedie hudby online.[104]
- The Mezinárodní vesmírná stanice - sbírat telemetrická data na oběžné dráze a replikovat je na zem.[105]
- MyYearbook stránka sociální sítě.[106]
- Instagram, mobilní služba pro sdílení fotografií.[107]
- Diskuse, služba online diskuzí a komentářů.[108]
- TripAdvisor, cestovní informační web převážně s obsahem vytvářeným uživateli.[109]
- Yandex, ruská internetová společnost přešla na službu Yandex.Mail z Oracle na Postgres.[110]
- Amazon Redshift, část AWS, sloupovitý online analytické zpracování (OLAP) systém založený na ParAccel úpravy Postgresu.
- Národní úřad pro oceán a atmosféru (NOAA) Národní meteorologická služba (NWS), Interactive Forecast Preparation System (IFPS), systém, který integruje data z NEXRAD meteorologické radary, povrch a hydrologie systémy k vytváření podrobných lokalizovaných předpovědních modelů.[98][111]
- Spojené království národní meteorologická služba, Met Office, začal vyměňovat Oracle za PostgreSQL ve strategii zavádění více open source technologií.[111][112]
- WhitePages.com používal Oracle a MySQL, ale když došlo na interní přesunutí jeho hlavních adresářů, obrátilo se to na PostgreSQL. Protože WhitePages.com potřebuje kombinovat velké soubory dat z více zdrojů, byla klíčem k jeho rozhodnutí používat PostgreSQL schopnost PostgreSQL načítat a indexovat data vysokou rychlostí.[98]
- FlightAware, web pro sledování letů.[113]
- Grofers, služba doručování potravin online.[114]
- Opatrovník migroval z MongoDB do PostgreSQL v roce 2018.[115]
Implementace služeb
Někteří významní prodejci nabízejí PostgreSQL as software jako služba:
- Heroku, a platforma jako služba poskytovatel, podporuje PostgreSQL od začátku v roce 2007.[116] Nabízejí funkce s přidanou hodnotou, jako je plná databáze vrátit zpět (schopnost obnovit databázi z libovolného zadaného času),[117] který je založen na open source softwaru WAL-E vyvinutém společností Heroku.[118]
- V lednu 2012 EnterpriseDB vydali cloudovou verzi PostgreSQL a vlastního proprietárního serveru Postgres Plus Advanced Server s automatickým zajišťováním převzetí služeb při selhání, replikace, vyvažování zátěže a škálování. Běží dál Webové služby Amazon.[119] Od roku 2015 je Postgres Advanced Server nabízen jako ApsaraDB pro PPAS, relační databázi jako službu v cloudu Alibaba.[120]
- VMware nabídl vFabric Postgres (také nazývaný vPostgres[121]) pro soukromé cloudy zapnuto VMware vSphere od května 2012.[122] Společnost oznámila konec dostupnosti (EOA) produktu v roce 2014.[123]
- V listopadu 2013 Webové služby Amazon oznámila přidání PostgreSQL do jejich Relační databázová služba nabídka.[124][125]
- V listopadu 2016 Webové služby Amazon oznámila přidání kompatibility PostgreSQL do jejich cloud-native Amazon Aurora nabídka spravované databáze.[126]
- V květnu 2017 Microsoft Azure oznámila Azure Databáze pro PostgreSQL[127]
- V květnu 2019 Cloud Alibaba oznámila PolarDB pro PostgreSQL.[128]
- Jelastic Multicloud Platforma jako služba poskytuje podporu PostgreSQL založenou na kontejnerech od roku 2011. Nabízejí automatickou asynchronní replikaci PostgreSQL typu master-slave dostupnou z tržiště.[129]
- V červnu 2019 IBM Cloud oznámil IBM Cloud Hyper Protect DBaaS pro PostgreSQL.[130]
- V září 2020 společnost Crunchy Data oznámila Křupavý most.[131]
Historie vydání
Uvolnění | První vydání | Poslední vedlejší verze | Poslední vydání | Konec život[132] | Milníky |
---|---|---|---|---|---|
6.0 | 1997-01-29 | N / A | N / A | N / A | První formální vydání PostgreSQL, jedinečné indexy, obslužný program pg_dumpall, autentizace ident |
6.1 | 1997-06-08 | 6.1.1 | 1997-07-22 | N / A | Vícesloupcové indexy, sekvence, peněžní datový typ, GEQO (GEnetic Query Optimizer) |
6.2 | 1997-10-02 | 6.2.1 | 1997-10-17 | N / A | Rozhraní JDBC, spouštěče, programovací rozhraní serveru, omezení |
6.3 | 1998-03-01 | 6.3.2 | 1998-04-07 | 2003-03-01 | Schopnost dílčího výběru SQL-92, PL / pgTCL |
6.4 | 1998-10-30 | 6.4.2 | 1998-12-20 | 2003-10-30 | ZOBRAZENÍ (pak pouze pro čtení) a PRAVIDLA, PL / pgSQL |
6.5 | 1999-06-09 | 6.5.3 | 1999-10-13 | 2004-06-09 | MVCC, dočasné tabulky, další podpora příkazů SQL (CASE, INTERSECT a EXCEPT) |
7.0 | 2000-05-08 | 7.0.3 | 2000-11-11 | 2004-05-08 | Cizí klíče, syntaxe SQL-92 pro spojení |
7.1 | 2001-04-13 | 7.1.3 | 2001-08-15 | 2006-04-13 | Protokol zápisu dopředu, vnější spojení |
7.2 | 2002-02-04 | 7.2.8 | 2005-05-09 | 2007-02-04 | PL / Python, OID již není nutné, internacionalizace zpráv |
7.3 | 2002-11-27 | 7.3.21 | 2008-01-07 | 2007-11-27 | Schéma, stolní funkce, připravený dotaz[133] |
7.4 | 2003-11-17 | 7.4.30 | 2010-10-04 | 2010-10-01 | Optimalizace na JOINs a datový sklad funkce[134] |
8.0 | 2005-01-19 | 8.0.26 | 2010-10-04 | 2010-10-01 | Nativní server je zapnutý Microsoft Windows, uložené body, tabulkové prostory, point-in-time zotavení[135] |
8.1 | 2005-11-08 | 8.1.23 | 2010-12-16 | 2010-11-08 | Optimalizace výkonu, dvoufázové potvrzení, tabulka rozdělení, skenování bitmapových indexů, uzamčení sdílených řádků, role |
8.2 | 2006-12-05 | 8.2.23 | 2011-12-05 | 2011-12-05 | Optimalizace výkonu, vytváření online indexů, poradenské zámky, teplý pohotovostní režim[136] |
8.3 | 2008-02-04 | 8.3.23 | 2013-02-07 | 2013-02-07 | Haldy pouze n-tice, fulltextové vyhledávání,[137] SQL / XML, ENUM types, UUID typy |
8.4 | 2009-07-01 | 8.4.22 | 2014-07-24 | 2014-07-24 | Windowing functions, column-level permissions, parallel database restore, per-database collation, common table expressions and recursive queries[138] |
9.0 | 2010-09-20 | 9.0.23 | 2015-10-08 | 2015-10-08 | Built-in binary streaming replikace, hot standby, in-place upgrade ability, 64-bit Windows[139] |
9.1 | 2011-09-12 | 9.1.24 | 2016-10-27 | 2016-10-27 | Synchronous replication, per-column collations, unlogged tables, serializable snapshot isolation, writeable common table expressions, SELinux integration, extensions, foreign tables[140] |
9.2 | 2012-09-10[141] | 9.2.24 | 2017-11-09 | 2017-11-09 | Cascading streaming replication, index-only scans, native JSON support, improved lock management, range types, pg_receivexlog tool, space-partitioned GiST indexes |
9.3 | 2013-09-09 | 9.3.25 | 2018-11-08 | 2018-11-08 | Custom background workers, data checksums, dedicated JSON operators, LATERAL JOIN, faster pg_dump, new pg_isready server monitoring tool, trigger features, view features, writeable foreign tables, materialized views, replication improvements |
9.4 | 2014-12-18 | 9.4.26 | 2020-02-13 | 2020-02-13 | JSONB data type, ALTER SYSTEM statement for changing config values, ability to refresh materialized views without blocking reads, dynamic registration/start/stop of background worker processes, Logical Decoding API, GiN index improvements, Linux huge page support, database cache reloading via pg_prewarm, reintroducing Hstore as the column type of choice for document-style data.[142] |
9.5 | 2016-01-07 | 9.5.24 | 2020-11-12 | 2021-02-11 | UPSERT, row level security, TABLESAMPLE, CUBE/ROLLUP, GROUPING SETS, and new BRIN index[143] |
9.6 | 2016-09-29 | 9.6.20 | 2020-11-12 | 2021-11-11 | Parallel query support, PostgreSQL foreign data wrapper (FDW) improvements with sort/join pushdown, multiple synchronous standbys, faster vacuuming of large table |
10 | 2017-10-05 | 10.15 | 2020-11-12 | 2022-11-10 | Logical replication,[144] declarative table partitioning, improved query parallelism |
11 | 2018-10-18 | 11.10 | 2020-11-12 | 2023-11-09 | Increased robustness and performance for partitioning, transactions supported in stored procedures, enhanced abilities for query parallelism, just-in-time (JIT) compiling for expressions[145][146] |
12 | 2019-10-03 | 12.5 | 2020-11-12 | 2024-11-14 | Improvements to query performance and space utilization; SQL/JSON path expression support; generated columns; improvements to internationalization, and authentication; new pluggable table storage interface.[147] |
13 | 2020-09-24 | 13.1 | 2020-11-12 | 2025-11-13 | Space savings and performance gains from de-duplication of B-tree index entries, improved performance for queries that use aggregates or partitioned tables, better query planning when using extended statistics, parallelized vacuuming of indexes, incremental sorting[148][149] |
Viz také
- Porovnání systémů správy relačních databází
- Database scalability
- List of databases using MVCC
- LLVM (the JIT engine used by PostgreSQL)
- Soulad s SQL
Reference
- ^ "PostgreSQL". Citováno 21. září 2019.
PostgreSQL: The World's Most Advanced Open Source Relational Database
- ^ A b "Contributor Profiles". PostgreSQL Global Development Group. Citováno 14. března 2017.
- ^ A b "Happy Birthday, PostgreSQL!". PostgreSQL Global Development Group. July 8, 2008.
- ^ "PostgreSQL 13.1, 12.5, 11.10, 10.15, 9.6.20, and 9.5.24 Released!". PostgreSQL. The PostgreSQL Global Development Group. 12. listopadu 2020. Citováno 13. listopadu 2020.
- ^ "PostgreSQL: Downloads". Citováno 12. dubna 2019.
- ^ A b "License". PostgreSQL Global Development Group. Citováno 20. září 2010.
- ^ "PostgreSQL licence approved by OSI". Crynwr. February 18, 2010. Archived from originál 8. srpna 2016. Citováno 18. února 2010.
- ^ A b "OSI PostgreSQL Licence". Open Source Initiative. 20. února 2010. Citováno 20. února 2010.
- ^ "Debian -- Details of package postgresql in sid". debian.org.
- ^ "Licensing:Main". FedoraProject.
- ^ "PostgreSQL". fsf.org.
- ^ "Audio sample, 5.6k MP3".
- ^ A b Stonebraker, M.; Rowe, L. A. (May 1986). The design of POSTGRES (PDF). Proc. 1986 ACM SIGMOD Conference on Management of Data. Washington DC. Citováno 17. prosince 2011.
- ^ "PostgreSQL: History". PostgreSQL Global Development Group. Archivovány od originál on March 26, 2017. Citováno 27. srpna 2016.
- ^ "Project name – statement from the core team". archives.postgresql.org. 16. listopadu 2007. Citováno 16. listopadu 2007.
- ^ "What is PostgreSQL?". PostgreSQL 9.3.0 Documentation. PostgreSQL Global Development Group. Citováno 20. září 2013.
- ^ "OS X Lion Server — Technical Specifications". 4. srpna 2011. Citováno 12. listopadu 2011.
Web Hosting [..] PostgreSQL
- ^ "Lion Server: MySQL not included". 4. srpna 2011. Citováno 12. listopadu 2011.
- ^ A b "Mac OS X packages". The PostgreSQL Global Development Group. Citováno 27. srpna 2016.
- ^ "Michael Stonebraker – A.M. Turing Award Winner". amturing.acm.org. Citováno 20. března 2018.
Techniques pioneered in Postgres were widely implemented [..] Stonebraker is the only Turing award winner to have engaged in serial entrepreneurship on anything like this scale, giving him a distinctive perspective on the academic world.
- ^ Stonebraker, M.; Rowe, L. A. The POSTGRES data model (PDF). Proceedings of the 13th International Conference on Very Large Data Bases. Brighton, England: Morgan Kaufmann Publishers. 83–96. ISBN 0-934613-46-X.
- ^ Pavel Stehule (June 9, 2012). "Historie projektu PostgreSQL" (v češtině).
- ^ A Brief History of PostgreSQL "Version 3 appeared in 1991 and added support for multiple storage managers, an improved query executor, and a rewritten rule system.". postgresql.org. The PostgreSQL Global Development Group, Retrieved on 18 March 2020.
- ^ "University POSTGRES, Version 4.2". July 26, 1999.
- ^ Page, Dave (April 7, 2015). "Re: 20th anniversary of PostgreSQL ?". pgsql-advocacy (Poštovní seznam). Citováno 9. dubna 2015.
- ^ Dan R. K. Ports; Kevin Grittner (2012). "Serializable Snapshot Isolation in PostgreSQL" (PDF). Proceedings of the VLDB Endowment. 5 (12): 1850–1861. arXiv:1208.4179. Bibcode:2012arXiv1208.4179P. doi:10.14778/2367502.2367523.
- ^ PostgreSQL 9.1 with synchronous replication (news), H Online
- ^ "Postgres-XC project page" (website). Postgres-XC. Archivovány od originál on July 1, 2012.
- ^ "Postgres-R: a database replication system for PostgreSQL". Postgres Global Development Group. Archivovány od originál 29. března 2010. Citováno 27. srpna 2016.
- ^ "Postgres-BDR". 2ndQuadrant Ltd. Citováno 27. srpna 2016.
- ^ Marit Fischer (November 10, 2007). "Backcountry.com finally gives something back to the open source community" (Tisková zpráva). Backcountry.com. Archivovány od originál on December 26, 2010.
- ^ Bartunov, O; Sigaev, T (May 2011). SP-GiST – a new indexing framework for PostgreSQL (PDF). PGCon 2011. Ottawa, Canada. Citováno 31. ledna 2016.
- ^ Bartunov, O; Sigaev, T (May 2010). K-nearest neighbour search for PostgreSQL (PDF). PGCon 2010. Ottawa, Canada. Citováno 31. ledna 2016.
- ^ "PostgreSQL, the NoSQL Database | Linux Journal". www.linuxjournal.com.
- ^ Geoghegan, Peter (March 23, 2014). "What I think of jsonb".
- ^ "PostgreSQL: Documentation: 9.0: pg_upgrade". www.postgresql.org. Citováno 9. června 2020.
- ^ Obe, Regina; Hsu, Leo S. (2012). "10: Replication and External Data". PostgreSQL: Up and Running (1. vyd.). Sebastopol, CA: O'Reilly Media, Inc. p. 129. ISBN 978-1-4493-2633-3. Citováno 17. října 2016.
Foreign Data Wrappers (FDW) [...] are mechanisms of querying external datasources. PostgreSQL 9.1 introduced this SQL / MED standards compliant feature.
- ^ "libpqxx". Citováno 4. dubna 2020.
- ^ "PostgreSQL JDBC Driver". Citováno 4. dubna 2020.
- ^ "PostgreSQL + Python | Psycopg". initd.org.
- ^ "node-postgres". Citováno 4. dubna 2020.
- ^ "SQL database drivers". Go wiki. golang.org. Citováno 22. června 2015.
- ^ "Rust-Postgres". Citováno 4. dubna 2020.
- ^ "Server Programming". Postgresql documentation. Citováno 19. května 2019.
- ^ "DĚLAT". Postgresql documentation. Citováno 19. května 2019.
- ^ "PL/Python - Python Procedural Language". Postgresql documentation. Citováno 19. května 2019.
- ^ "Procedural Languages". postgresql.org. 31. března 2016. Citováno 7. dubna 2016.
- ^ "PLR Github Repo".
- ^ Chartier, Colin. "System design hack: Postgres is a great pub/sub & job server". LayerCI blog. Citováno 24. listopadu 2019.
- ^ "Release 9.5". postgresql.org.
- ^ Ringer, Craig. "What is SKIP LOCKED for in PostgreSQL 9.5?". 2nd Quadrant. Citováno 24. listopadu 2019.
- ^ "Add a materialized view relations". 4. března 2013. Citováno 4. března 2013.
- ^ "Support automatically-updatable views". 8. prosince 2012. Citováno 8. prosince 2012.
- ^ "Add CREATE RECURSIVE VIEW syntax". 1. února 2013. Citováno 28. února 2013.
- ^ Momjian, Bruce (2001). "Subqueries". PostgreSQL: Introduction and Concepts. Addison-Wesley. ISBN 0-201-70331-9. Archivovány od originál on August 9, 2010. Citováno 25. září 2010.
- ^ Bernier, Robert (February 2, 2006). "Using Regular Expressions in PostgreSQL". O'Reilly Media. Citováno 25. září 2010.
- ^ "A few short notes about PostgreSQL and POODLE". hagander.net.
- ^ Berkus, Josh (June 2, 2016). "PostgreSQL 9.6 Beta and PGCon 2016". LWN.net.
- ^ "FAQ – PostgreSQL wiki". wiki.postgresql.org. Citováno 13. dubna 2017.
- ^ "SEPostgreSQL Documentation – PostgreSQL wiki". wiki.postgresql.org.
- ^ "NB SQL 9.3 - SELinux Wiki". selinuxproject.org.
- ^ "PostgreSQL 10 Documentation: Appendix E. Release Notes".
- ^ "Case sensitivity of identifiers". PostgreSQL Global Development Group.
- ^ A b Berkus, Josh (July 6, 2007). "PostgreSQL publishes first real benchmark". Archivovány od originál dne 12. července 2007. Citováno 10. července 2007.
- ^ Vilmos, György (September 29, 2009). "PostgreSQL history". Citováno 28. srpna 2010.
- ^ "SPECjAppServer2004 Result". SPEC. 6. července 2007. Citováno 10. července 2007.
- ^ "SPECjAppServer2004 Result". SPEC. 4. července 2007. Citováno 1. září 2007.
- ^ "Managing Kernel Resources". PostgreSQL Manual. PostgreSQL.org. Citováno 12. listopadu 2011.
- ^ Greg Smith (October 15, 2010). PostgreSQL 9.0 High Performance. Packt Publishing. ISBN 978-1-84951-030-1.
- ^ Robert Haas (April 3, 2012). "Did I Say 32 Cores? How about 64?". Citováno 8. dubna 2012.
- ^ Khushi, Matloob (June 2015). "Benchmarking database performance for genomic data". J Cell Biochem. 116 (6): 877–83. arXiv:2008.06835. doi:10.1002/jcb.25049. PMID 25560631.
- ^ "PostgreSQL: Windows installers". www.postgresql.org. Citováno 14. října 2019.
- ^ "postgresql-client-10.5p1 – PostgreSQL RDBMS (client)". Porty OpenBSD. October 4, 2018. Citováno 10. října 2018.
- ^ "oi_151a Release Notes". OpenIndiana. Citováno 7. dubna 2012.
- ^ "AArch64 planning BoF at DebConf". debian.org.
- ^ Souza, Rubens (June 17, 2015). "Step 5 (update): Installing PostgreSQL on my Raspberry Pi 1 and 2". Raspberry PG. Citováno 27. srpna 2016.
- ^ "Supported Platforms". PostgreSQL Global Development Group. Citováno 6. dubna 2012.
- ^ "pgAdmin: PostgreSQL administration and management tools". webová stránka. Citováno 12. listopadu 2011.
- ^ "Debian -- Details of package pgadmin3 in jessie". Citováno 10. března 2017.
- ^ "pgAdmin Development Team". pgadmin.org. Citováno 22. června 2015.
- ^ Dave, Page (December 7, 2014). "The story of pgAdmin". Dave's Postgres Blog. pgsnake.blogspot.co.uk. Citováno 7. prosince 2014.
- ^ "pgAdmin 4 README". Citováno 15. srpna 2018.
- ^ phpPgAdmin Project (April 25, 2008). "About phpPgAdmin". Citováno 25. dubna 2008.
- ^ PostgreSQL Studio (October 9, 2013). "About PostgreSQL Studio". Archivovány od originál 7. října 2013. Citováno 9. října 2013.
- ^ "TeamPostgreSQL website". 3. října 2013. Citováno 3. října 2013.
- ^ oooforum.org (January 10, 2010). "Back Ends for OpenOffice". Archivovány od originál dne 28. září 2011. Citováno 5. ledna 2011.
- ^ libreoffice.org (October 14, 2012). "Base features". Archivovány od originál 7. ledna 2012. Citováno 14. října 2012.
- ^ Greg Smith; Robert Treat & Christopher Browne. "Tuning your PostgreSQL server". Wiki. PostgreSQL.org. Citováno 12. listopadu 2011.
- ^ "pgDevOps". BigSQL.org. Archivovány od originál 1. dubna 2017. Citováno 4. května 2017.
- ^ "pgbackrest README".
- ^ "pgaudit README".
- ^ "wal-e README".
- ^ Emmanuel Cecchet (May 21, 2009). Building PetaByte Warehouses with Unmodified PostgreSQL (PDF). PGCon 2009. Citováno 12. listopadu 2011.
- ^ "MySpace.com scales analytics for all their friends" (PDF). case study. Aster Data. 15. června 2010. Archivováno (PDF) from the original on November 14, 2010. Citováno 12. listopadu 2011.
- ^ "Last Weekend's Outage". Blog. Geni. 1. srpna 2011.
- ^ "Databáze". Wiki. OpenStreetMap.
- ^ PostgreSQL affiliates .ORG domain, Australia: Computer World
- ^ A b C W. Jason Gilmore; R.H. Treat (2006). Beginning PHP and PostgreSQL 8: From Novice to Professional. Apress. ISBN 978-1-43020-136-6. Citováno 30. srpna 2017.
- ^ Sony Online opts for open-source database over Oracle, Computer World
- ^ "A Web Commerce Group Case Study on PostgreSQL" (PDF) (1.2 ed.). PostgreSQL.
- ^ "Architecture Overview". Reddit software wiki. Reddit. 27. března 2014. Citováno 25. listopadu 2014.
- ^ Pihlak, Martin. "PostgreSQL @Skype" (PDF). wiki.postgresql.org. Citováno 16. ledna 2019.
- ^ "How Much Are You Paying For Your Database?". Sun Microsystems blog. 2007. Archivovány od originál 7. března 2009. Citováno 14. prosince 2007.
- ^ "Database – MusicBrainz". MusicBrainz Wiki. Citováno 5. února 2011.
- ^ Duncavage, Daniel P (July 13, 2010). "NASA needs Postgres-Nagios help".
- ^ Roy, Gavin M (2010). "PostgreSQL at myYearbook.com" (talk). USA East: PostgreSQL Conference. Archivovány od originál 27. července 2011.
- ^ "Keeping Instagram up with over a million new users in twelve hours". Instagram-engineering.tumblr.com. 17. května 2011. Citováno 7. července 2012.
- ^ "Postgres at Disqus". Citováno 24. května 2013.
- ^ Kelly, Matthew (March 27, 2015). At the Heart of a Giant: Postgres at TripAdvisor. PGConf US 2015. Archived from originál 23. července 2015. Citováno 23. července 2015. (Presentation video )
- ^ "Yandex.Mail's successful migration from Oracle to Postgres [pdf]". Hacker News: news.ycombinator.com. Citováno 28. září 2016.
- ^ A b S. Riggs; G. Ciolli; H. Krosing; G. Bartolini (2015). PostgreSQL 9 Administration Cookbook - Second Edition. Packt. ISBN 978-1-84951-906-9. Citováno 5. září 2017.
- ^ "Met Office swaps Oracle for PostgreSQL". computerweekly.com. June 17, 2014. Citováno 5. září 2017.
- ^ "Open Source Software". FlightAware. Citováno 22. listopadu 2017.
- ^ "Ansible at Grofers (Part 2) — Managing PostgreSQL". Lambda - The Grofers Engineering Blog. 28. února 2017. Citováno 5. září 2018.
- ^ McMahon, Philip; Chiorean, Maria-Livia; Coleman, Susie; Askoolum, Akash (November 30, 2018). "Digital Blog: Bye bye Mongo, Hello Postgres". Opatrovník. ISSN 0261-3077.
- ^ Alex Williams (April 1, 2013). "Heroku Forces Customer Upgrade To Fix Critical PostgreSQL Security Hole". TechCrunch.
- ^ Barb Darrow (November 11, 2013). "Heroku gussies up Postgres with database roll-back and proactive alerts". GigaOM.
- ^ Craig Kerstiens (September 26, 2013). "WAL-E and Continuous Protection with Heroku Postgres". Heroku blog.
- ^ "EnterpriseDB Offers Up Postgres Plus Cloud Database". Techweekeurope.co.uk. 27. ledna 2012. Citováno 7. července 2012.
- ^ "Alibaba Cloud Expands Technical Partnership with EnterpriseDB". Milestone Partners. 26. září 2018. Citováno 9. června 2020.
- ^ O'Doherty, Paul; Asselin, Stephane (2014). "3: VMware Workspace Architecture". VMware Horizon Suite: Building End-User Services. VMware Press Technology. Upper Saddle River, NJ: VMware Press. p. 65. ISBN 978-0-13-347910-2. Citováno 19. září 2016.
In addition to the open source version of PostgreSQL, VMware offers vFabric Postgres, or vPostgres. vPostgres is a PostgreSQL virtual appliance that has been tuned for virtual environments.
- ^ Al Sargent (May 15, 2012). "Introducing VMware vFabric Suite 5.1: Automated Deployment, New Components, and Open Source Support". VMware blogs.
- ^ https://www.vmware.com/products/vfabric-postgres.html
- ^ Jeff (November 14, 2013). "Amazon RDS for PostgreSQL – Now Available". Amazon Web Services Blog.
- ^ Alex Williams (November 14, 2013). "PostgreSQL Now Available On Amazon's Relational Database Service". TechCrunch.
- ^ "Amazon Aurora Update – PostgreSQL Compatibility". AWS Blog. 30. listopadu 2016. Citováno December 1, 2016.
- ^ "Announcing Azure Database for PostgreSQL". Azure Blog. Citováno 19. června 2019.
- ^ https://developpaper.com/aliyun-polardb-released-major-updates-to-support-one-click-migration-of-databases-such-as-oracle-to-the-cloud/
- ^ "Asynchronous Master-Slave Replication of PostgreSQL Databases in One Click". DZone. Citováno 26. května 2017.
- ^ "IBM Cloud Hyper Protect DBaaS for PostgreSQL documentation". cloud.ibm.com. Citováno 24. června 2020.
- ^ "Crunchy Data Continues PostgreSQL Support with the Release of Crunchy Bridge". September 18, 2020.
- ^ "Versioning policy". PostgreSQL Global Development Group. Citováno 4. října 2018.
- ^ Vaas, Lisa (December 2, 2002). "Databases Target Enterprises". eTýden. Citováno 29. října 2016.
- ^ Krill, Paul (November 20, 2003). "PostgreSQL boosts open source database". InfoWorld. Citováno 21. října 2016.
- ^ Krill, Paul (January 19, 2005). "PostgreSQL open source database boasts Windows boost". InfoWorld. Citováno 2. listopadu 2016.
- ^ Weiss, Todd R. (December 5, 2006). "Version 8.2 of open-source PostgreSQL DB released". Computerworld. Citováno 17. října 2016.
- ^ Gilbertson, Scott (February 5, 2008). "PostgreSQL 8.3: Open Source Database Promises Blazing Speed". Kabelové. Citováno 17. října 2016.
- ^ Huber, Mathias (July 2, 2009). "PostgreSQL 8.4 Proves Feature-Rich". Linux Magazine. Citováno 17. října 2016.
- ^ Brockmeier, Joe (September 30, 2010). "Five Enterprise Features in PostgreSQL 9". Linux.com. Linux Foundation. Citováno 6. února 2017.
- ^ Timothy Prickett Morgan (September 12, 2011). "PostgreSQL revs to 9.1, aims for enterprise". Registrace. Citováno 6. února 2017.
- ^ "PostgreSQL: PostgreSQL 9.2 released". www.postgresql.org.
- ^ "Reintroducing Hstore for PostgreSQL". InfoQ.
- ^ Richard, Chirgwin (January 7, 2016). "Say oops, UPSERT your head: PostgreSQL version 9.5 has landed". Registrace. Citováno 17. října 2016.
- ^ "PostgreSQL: Documentation: 10: Chapter 31. Logical Replication". www.postgresql.org.
- ^ "PostgreSQL 11 Released". Citováno 18. října 2018.
- ^ "PostgreSQLRelease Notes". Citováno 18. října 2018.
- ^ "PostgreSQL: PostgreSQL 12 Released!". www.postgresql.org.
- ^ "PostgreSQL: PostgreSQL 13 Release Notes!". www.postgresql.org.
- ^ "PostgreSQL: PostgreSQL 13 Released!". www.postgresql.org.
Další čtení
- Obe, Regina; Hsu, Leo (July 8, 2012). PostgreSQL: Up and Running. O'Reilly. ISBN 978-1-4493-2633-3.
- Krosing, Hannu; Roybal, Kirk (June 15, 2013). PostgreSQL Server Programming (druhé vydání). Packt Publishing. ISBN 978-1-84951-698-3.
- Riggs, Simon; Krosing, Hannu (October 27, 2010). PostgreSQL 9 Administration Cookbook (druhé vydání). Packt Publishing. ISBN 978-1-84951-028-8.
- Smith, Greg (October 15, 2010). PostgreSQL 9 High Performance. Packt Publishing. ISBN 978-1-84951-030-1.
- Gilmore, W. Jason; Treat, Robert (February 27, 2006). Beginning PHP and PostgreSQL 8: From Novice to Professional. Apress. p. 896. ISBN 1-59059-547-5. Archivovány od originál 8. července 2009. Citováno 28. dubna 2009.
- Douglas, Korry (August 5, 2005). PostgreSQL (druhé vydání). Sams. p. 1032. ISBN 0-672-32756-2.
- Matthew, Neil; Stones, Richard (April 6, 2005). Beginning Databases with PostgreSQL (druhé vydání). Apress. p. 664. ISBN 1-59059-478-9. Archivovány od originál 9. dubna 2009. Citováno 28. dubna 2009.
- Worsley, John C; Drake, Joshua D (January 2002). Practical PostgreSQL. O'Reilly Media. str.636. ISBN 1-56592-846-6.