PostgreSQL | |
---|---|
Típusú | relációs DBMS , ingyenes és nyílt forráskódú szoftverek és SQL szerver [d] |
Szerző | Michael Stonebreaker [1] |
Fejlesztő | PostgreSQL közösség |
Beírva | C [3] [4] |
Operációs rendszer | FreeBSD [5] , OpenBSD [5] , Linux [5] , macOS [5] , Solaris [5] , Microsoft Windows [5] és Unix-szerű operációs rendszer |
Első kiadás | 1996 |
legújabb verzió |
|
Engedély | PostgreSQL licenc ( ingyenes és nyílt forráskódú ) |
Weboldal | postgresql.org _ |
Médiafájlok a Wikimedia Commons oldalon |
A PostgreSQL (ejtsd: "Post-Gres-Q-El" [6] ) egy ingyenes objektum-relációs adatbázis-kezelő rendszer (DBMS).
Különféle UNIX-szerű platformok megvalósításában létezik , beleértve az AIX -et , a különböző BSD-rendszereket , a HP-UX- t , az IRIX -et , a Linuxot , a macOS -t , a Solaris / OpenSolaris -t , a Tru64 -et , a QNX -et és a Microsoft Windows rendszert .
A PostgreSQL az SQL nyelven alapul, és támogatja az SQL:2011 [7] [8] szabvány számos funkcióját .
A PostgreSQL 12-es verziója a következő korlátozásokkal rendelkezik [9] :
Maximális adatbázisméret | Korlátozások nélkül |
Maximális asztalméret | 32 TB |
Maximális mezőméret | 1 GB |
Maximális rekordok táblánként | Az asztal mérete korlátozza |
Maximum mezők száma egy rekordban | 250-1600, mezőtípustól függően |
Maximális indexek táblánként | Korlátozások nélkül |
A PostgreSQL erősségei a következők:
A PostgreSQL a nem kereskedelmi célú Postgres adatbázison alapul, amelyet nyílt forráskódú projektként fejlesztettek ki a Kaliforniai Egyetemen, Berkeleyben . A Postgres 1986-ban indult fejlesztése közvetlenül kapcsolódott Michael Stonebreakerhez , a korábbi Ingres projekt vezetőjéhez , amelyet akkor már a Computer Associates vásárolt meg . A név a „ Post Ingres ” kifejezést jelentette , és sok korai fejlesztést alkalmaztak a Postgres létrehozásában.
Stonebreaker és tanítványai nyolc éven keresztül fejlesztették az új DBMS-t 1986 és 1994 között. Ebben az időszakban eljárásokat, szabályokat, felhasználó által definiált típusokat és egyéb összetevőket vezettek be a szintaxisba. 1995-ben a fejlesztés ismét kettészakadt: Stonebreaker tapasztalatait felhasználva létrehozta az Illustra kereskedelmi adatbázist , amelyet saját, azonos nevű cége (később az Informix vásárolt meg ), tanítványai pedig kifejlesztették a Postgres új verzióját, a Postgres95-öt, amelyben a POSTQUEL lekérdezési nyelvet , az Ingres örökségét, SQL-re cserélték.
A Postgres95 fejlesztést az egyetemen kívülre vitték, és átadták egy rajongó csapatnak. Az új DBMS azt a nevet kapta, amelyen ismert és jelenleg fejlesztés alatt áll - PostgreSQL.
Változat | Első megjelenési dátum | Utolsó kisebb verzió | Utolsó megjelenési dátum | Támogatás vége [11] | Megvalósított funkciók |
---|---|---|---|---|---|
6.0 | 1997-01-29 | n/a | n/a | n/a | Formálisan a PostgreSQL első kiadása. Egyedi indexek, pg_dumpall segédprogram, azonosító hitelesítés . |
6.1 | 1997-06-08 | 6.1.1 | 1997-07-22 | n/a | Többoszlopos indexek, sorozatok, pénz adattípus, GEQO (GENetic Query Optimizer). |
6.2 | 1997-10-02 | 6.2.1 | 1997-10-17 | n/a | JDBC interfész , triggerek , szerver programozási felület, korlátozások . |
6.3 | 1998-03-01 | 6.3.2 | 1998-04-07 | 2003-03-01 | Válassza ki az SQL-92 , PL/pgTCL támogatását. |
6.4 | 1998-10-30 | 6.4.2 | 1998-12-20 | 2003-10-30 | A VIEW (csak olvasható módban) és a szabályok, PL/pgSQL támogatása . |
6.5 | 1999-06-09 | 6.5.3 | 1999-10-13 | 2004-06-09 | MVCC , ideiglenes táblák, új SQL utasítások támogatása (CASE, INTERSECT és EXCEPT). |
7.0 | 2000-05-08 | 7.0.3 | 2000-11-11 | 2004-05-08 | Külső tartalmazza, SQL-92 szintaxis a csatlakozásokhoz (JOIN). |
7.1 | 2001-04-13 | 7.1.3 | 2001-08-15 | 2006-04-13 | Proaktív naplózás , KÜLSŐ CSATLAKOZÁS. |
7.2 | 2002-02-04 | 7.2.8 | 2005-05-09 | 2007-02-04 | A PL/Python, az OID mező opcionálissá válik a táblázatokban, az üzenet nemzetköziesítésében és lokalizálásában . |
7.3 | 2002-11-27 | 7.3.21 | 2008-01-07 | 2007-11-27 | sémák , táblafüggvények, előkészített lekérdezések [12] . |
7.4 | 2003-11-17 | 7.4.30 | 2010-10-04 | 2010-10-01 | Optimalizálás a JOIN-okban és az adattárház-funkciókban [13] . |
8.0 | 2005-01-19 | 8.0.26 | 2010-10-04 | 2010-10-01 | Microsoft Windows verzió , mentési pontok a tranzakciókban , táblaterületek , pontszerű helyreállítás [14] . |
8.1 | 2005-11-08 | 8.1.23 | 2010-12-16 | 2010-11-08 | Teljesítményoptimalizálás, kétfázisú véglegesítés, táblaparticionálás , index bittérképes vizsgálat az SQL-tervezőben, megosztott sorszintű zárolás, szerepkörök. |
8.2 | 2006-12-05 | 8.2.23 | 2011-12-05 | 2011-12-05 | Teljesítményoptimalizálás, non-stop indexépítés, tanácsadó zárak, "meleg készenléti" mód az adatbázis WAL-rekordokból történő visszaállításakor [15] . |
8.3 | 2008-02-04 | 8.3.23 | 2013-02-07 | 2013-02-07 | Csak halom sorok mechanizmusa, teljes szöveges keresés , [16] SQL/XML , ENUM típusok, UUID típusok . |
8.4 | 2009-07-01 | 8.4.22 | 2014-07-24 | 2014-07-24 | Ablakfüggvények, jogosultságok a tábla mezőinek (oszlopainak) szintjén, párhuzamos adatbázis-helyreállítás, adatbázis szintű rendezési szabályok, általános táblalekérdezések és rekurzív lekérdezések [17] . |
9.0 | 2010-09-20 | 9.0.23 | 2015-10-08 | 2015-10-08 | Beépített streaming bináris replikáció , forró készenléti mód , frissítés a szerver leállítása nélkül, a Windows 64 bites verzióinak támogatása [18] . |
9.1 | 2011-09-12 | 9.1.24 | 2016-10-27 | 2016-10-27 | Szinkron replikáció, oszloponkénti rendezés, nem naplózott táblák, "serializable snapshot izolálás" tranzakciós elkülönítési szint, írhatóság a gyakori SQL táblalekérdezésekben, SELinux integráció , bővítmények, külső táblák [19] . |
9.2 | 2012-09-10 [20] | 9.2.24 | 2017-11-09 | 2017-11-09 | Lépcsőzetes adatfolyam-replikáció, csak index-ellenőrzés, közvetlen JSON -támogatás , továbbfejlesztett zárkezelés, tartománytípusok, pg_receivexlog segédprogram, térparticionált GiST -indexek . |
9.3 | 2013-09-09 | 9.3.25 | 2018-11-08 | 2018-11-08 | Konfigurálható háttérmunkafolyamatok, oldal-ellenőrző összegek a sérült adatok észleléséhez, JSON-utasítások, OLDALSÓ CSATLAKOZÁS, pg_dump-gyorsítás, új pg_isready szerverfigyelő segédprogram, továbbfejlesztett trigger- és alapnézeti képességek, írható külső táblák, megvalósult nézetek , replikációs fejlesztések. |
9.4 | 2014-12-18 | 9.4.26 | 2020-02-13 | 2020-02-13 | JSONB adattípus , ALTER SYSTEM utasítás a rendszerkonfiguráció értékeinek megváltoztatásához, a materializált nézetek frissítése olvasási blokkolás nélkül, dinamikus regisztráció/indítás/leállítás a háttérben dolgozó folyamatok, logikai dekódoló API az adatbázis-kapcsolathoz, továbbfejlesztett GIN indexek , hatalmas támogatás oldalak Linux számára, az adatbázis-gyorsítótár újratöltése a pg_prewarm segítségével, a Hstore új, gyorsított verziójával, amely az oszlopadatok tárolásának előnyben részesített módja [21] . |
9.5 | 2016-01-07 | 9.5.25 | 2021-02-11 | 2021-02-11 | UPSERT, sorvédelmi szabályzatok, TABLESAMPLE, CUBE/ROLLUP, GROUPING SETS és az új BRIN indextípus [22] . |
9.6 | 2016-09-29 | 9.6.24 | 2021-11-11 | 2021-11-11 | Párhuzamos lekérdezés támogatása, PostgreSQL külföldi adatkezelési (FDW) fejlesztések - hozzáadott pushdown opció a rendezéshez/csatlakozáshoz, több szinkron hot standby szerver, gyorsabb vákuumműködés nagy asztalokon. |
tíz | 2017-10-05 | 10.20 | 2022-02-10 | 2022-11-10 | Logikai replikáció, [23] deklaratív táblaparticionálás, javított párhuzamos végrehajtás a lekérdezésekben. |
tizenegy | 2018-10-18 | 11.15 | 2022-02-10 | 2023-11-09 | Továbbfejlesztett particionálási stabilitás és teljesítmény, tranzakciók támogatása tárolt eljárásokban, jobb párhuzamos végrehajtás a lekérdezésekben, JIT (just-in-time) kifejezések fordítása [24] [25] . |
12 | 2019-10-03 | 12.10 | 2022-02-10 | 2024-11-14 | A lekérdezések felgyorsítása és a lemezterület gazdaságosabb kihasználása; SQL/JSON elérési út nyelvi kifejezéseinek támogatása; generált oszlopok; a nemzetközivé válás és a hitelesítés fejlesztése; egy új interfész a csatlakoztatható táblázatkezelő motorok létrehozásához [26] . |
13 | 2020-09-24 | 13.6 | 2022-02-10 | 2025-11-13 | A csomópontok deduplikációja a B-fa indexekben gyorsabb és kevesebb helyet igényel, megnövekedett aggregátumokat vagy particionált táblákat használó lekérdezések teljesítménye, javított lekérdezések ütemezése kiterjesztett statisztikák használatakor, indexek párhuzamos vákuumozása, növekményes rendezés [27] [28] . |
tizennégy | 2021-09-30 | 14.2 | 2022-02-10 | 2026-11-12 | Az SQL által definiált SEARCH és CYCLE opciók megengedettek az általános táblalekérdezésekben , és megengedett a DISTINCT hozzáadása a GROUP BY [29] [30] csoporthoz . |
A függvények olyan kódblokkok, amelyek a kiszolgálón futnak, nem az adatbázis-ügyfélen. Bár tisztán SQL-ben írhatók, a további logikák, például a feltételes feltételek és a ciklusok megvalósítása kívül esik az SQL hatókörén, és bizonyos nyelvi kiterjesztések használatát igényli. A függvények a következő nyelvek egyikén írhatók:
A PostgreSQL lehetővé teszi olyan függvények használatát, amelyek egy rekordkészletet adnak vissza, amelyeket ezután ugyanúgy lehet használni, mint egy normál lekérdezés eredményeként.
A függvények mind a készítőjük, mind az aktuális felhasználó jogaival végrehajthatók.
Néha a függvényeket tárolt eljárásokkal azonosítják , de van különbség ezek között a fogalmak között. A kilencedik verzió óta lehetséges olyan autonóm blokkok írása, amelyek lehetővé teszik a kód végrehajtását eljárási nyelveken, írási funkciók nélkül, közvetlenül a kliensben.
A triggerek a DML műveletek által kezdeményezett függvények . Például egy INSERT művelet aktiválhat egy triggert, amely ellenőrzi a hozzáadott rekordot bizonyos feltételeknek megfelelően. A triggerek függvényeinek írásakor különféle programozási nyelvek használhatók (lásd fent).
A triggerek táblákhoz vannak társítva. A program több triggert hajt végre ábécé sorrendben.
A szabálymotor ( eng. rules ) egy olyan mechanizmus, amellyel egyéni kezelők hozhatók létre nem csak a DML -műveletekhez, hanem a kiválasztási műveletekhez is. A fő különbség a trigger mechanizmushoz képest az, hogy a szabályok a kérés elemzési szakaszában aktiválódnak, még az optimális végrehajtási terv és maga a végrehajtási folyamat kiválasztása előtt. A szabályok lehetővé teszik a rendszer viselkedésének felülbírálását, amikor SQL-műveletet hajt végre egy táblán. Jó példa erre a nézetek mechanizmusának megvalósítása ( eng. views ): a nézet létrehozásakor létrejön egy szabály, amely meghatározza, hogy a nézet lekérési művelete helyett a rendszer lekérési műveletet hajtson végre a mögöttes táblán. / táblázatok, figyelembe véve a nézetdefiníció alapjául szolgáló lekérési feltételeket. A frissítési műveleteket támogató nézetek létrehozásához a sorok beszúrásának, frissítésének és törlésének szabályait a felhasználónak kell meghatároznia.
A PostgreSQL a következő indextípusokat támogatja : B-tree , hash , GiST , GIN , BRIN , Bloom . Igény szerint új indextípusokat hozhat létre. A PostgreSQL indexei a következő tulajdonságokkal rendelkeznek:
A PostgreSQL támogatja az adatbázis több felhasználó általi egyidejű módosítását a Multiversion Concurrency Control ( MVCC ) mechanizmus segítségével. Ez megfelel az ACID követelményeknek , és gyakorlatilag szükségtelenné teszi az olvasási zárolást.
A PostgreSQL számos beépített adattípust támogat:
Ezenkívül a felhasználó a GiST segítségével önállóan hozhat létre új típusokat, amelyekre szüksége van, és indexelési mechanizmusokat programozhat rájuk .
A PostgreSQL-t a felhasználó saját igényei szerint szinte bármilyen szempontból kiterjesztheti. Lehetőség van saját hozzáadására:
A táblák jellemzőket és mezőkészleteket örökölhetnek más (szülő) tábláktól. Ebben az esetben a generált táblához hozzáadott adatok automatikusan részt vesznek (hacsak nincs külön megadva) a szülőtábla lekérdezésében.
A PostgreSQL 10 hozzáadott egy táblaparticionáló mechanizmust . A particionálás célja, hogy egy táblát több, úgynevezett partícióra ossza fel. A particionálás hasonló az örökléshez, de felhasználóbarátabb szintaxissal és erősebb korlátozásokkal rendelkezik, ami további optimalizálásokat tesz lehetővé a lekérdezés tervezésében.
A különféle szoftverek 2005-ben végzett automatizált hibaelemzésének eredményei szerint a PostgreSQL forráskódjában 775 000 forráskódsoronként 20 problémás területet találtak (átlagosan egy hiba 39 000 kódsoronként ) [31] . Összehasonlításképpen: MySQL - 97 probléma, 8000 kódsoronként egy hiba ; FreeBSD (egész) - 306 probléma, egy hiba 2500 kódsoronként ; Linux (csak kernel) – 950 probléma, 800 kódsoronként egy hiba .
A PostgreSQL licenc lehetővé teszi különféle, köztük kereskedelmi, villák létrehozását az alapján . Több tucat ismert [32] .
A PostgreSQL- re alapozva az EnterpriseDB kifejlesztette ennek a DBMS-nek más változatait is, amelyek kereskedelmi használatra fizetősek – a Postgres Plus (teljesen nyílt forráskódú termékekből áll; csak akkor kell fizetni, ha kereskedelmi támogatást kell vásárolnia a termékhez) és a Postgres Plus Advanced Server ( PostgreSQL bővítmény speciális képességekkel az Oracle adatbázissal való kompatibilitás biztosítása érdekében [33 ] . Ezeknek a termékeknek a szállítási készlete egy szoftverkészletet tartalmaz fejlesztők és adatbázis-adminisztrátorok számára:
Vannak más kereskedelmi termékek is, amelyek a PostgreSQL-en alapulnak, és különféle funkciókkal egészítik ki:
A fejlesztő céget 2015-ben alapította az orosz 3 vezető fejlesztő ( nagy közreműködő ) a PostgreSQL DBMS - Oleg Bartunov , Fedor Sigaev , Alexander Korotkov, a fejlesztő Ivan Panchenko és az NVision Group társalapítója , Anton Sushkevich, aki a projekt beruházója lett [41] .
Adatbázis-kezelő rendszerek (DBMS) | |
---|---|
Kliens-szerver | |
Motorok | |
Fájlszerver |
Adatbázis | |
---|---|
Fogalmak | |
Objektumok | |
Kulcsok |
|
SQL |
|
Alkatrészek |