PostgreSQL (вимовляється «Пост-грес-К'ю-ель», або «постгрес») — об'єктно-реляційна система керування базами даних (СКБД). Є альтернативою як комерційним СКБД (Oracle Database, Microsoft SQL Server, IBM DB2 та інші), так і СКБД з відкритим кодом (MySQL, Firebird, SQLite).
Тип | Система керування базами даних, Сервер |
---|---|
Автор | Майкл Стоунбрейкер[1] |
Розробники | Глобальна група розробників PostgreSQL |
Стабільний випуск | 14.1 (11 листопада 2021 ) |
Операційна система | Unix, Linux, Windows |
Мова програмування | C[2][3] |
Ліцензія | PostgreSQL license |
Репозиторій | git.postgresql.org/gitweb/?p=postgresql.git |
Вебсайт | www.postgresql.org |
|
Порівняно з іншими проєктами з відкритим кодом, такими як Apache, FreeBSD або MySQL, PostgreSQL не контролюється якоюсь однією компанією, її розробка можлива завдяки співпраці багатьох людей та компаній, які хочуть використовувати цю СКБД та впроваджувати у неї найновіші досягнення.
Сервер PostgreSQL написаний мовою C. Зазвичай розповсюджується у вигляді набору текстових файлів із початковим кодом. Для інсталяції необхідно відкомпілювати файли на своєму комп'ютері і скопіювати в деякий каталог. Весь процес детально описаний в документації.
Історія
PostgreSQL — широко розповсюджена система керування базами даних з відкритим початковим кодом. Прототип був розроблений в Каліфорнійському університеті Берклі в 1987 році під назвою POSTGRES, після чого активно розвивався і доповнювався. В червні 1990 року з'явилась друга версія із переробленою системою правил маніпулювання та роботи з таблицями, у 1991 році — третя версія, із доданою підтримкою одночасної роботи кількох менеджерів збереження, покращеним механізмом запитів і доповненою системою внутрішніх правил. В цей час POSTGRES використовувався для реалізації великих систем, таких як: система аналізу фінансових даних, пакет моніторингу функціональності потоків, база даних відстеження астероїдів, система медичної інформації, кілька географічних систем. POSTGRES також використовувався як навчальний інструмент в кількох університетах. 1992 року POSTGRES став головною СКБД наукового комп'ютерного проєкту Sequoia 2000. 1993 року кількість користувачів подвоїлась. Стало зрозуміло, що для підтримки й подальшого розвитку необхідні великі витрати часу на дослідження баз даних, тому офіційно проєкт Берклі було зупинено на версії 4.2. 1994 року Andrew Yu і Jolly Chen додали інтерпретатор мови SQL, вдосконалили початковий код і виклали в Інтернеті свою реалізацію під назвою Postgres95. 1996 року програмний продукт було перейменовано на PostgreSQL із початковою версією 6.0. Подальшою підтримкою й розробкою займається група спеціалістів у галузі баз даних, які добровільно приєднались до цього проєкту.
Основні можливості
Функції
Функції дозволяють виконувати деякий код безпосередньо сервером бази даних. Ці функції можуть бути написані на SQL, який має деякі примітивні програмні оператори, такі як галуження та цикли. Але гнучкішою буде функція написана на одній із мов програмування, з якими PostgreSQL може працювати. До таких мов належать:
- Вбудована мова, яка зветься [en], подібна до процедурної мови (PL/SQL) компанії Oracle.
- Мови розробки сценаріїв: [en], , , , .
- Класичні мови програмування C, , Java (за допомогою (PL/Java)).
Функції можуть виконуватись із привілеями користувача, який її викликав, або із привілеями користувача, який її написав.
Індекси
У PostgreSQL є підтримка індексів наступних типів: B-дерево, геш, R-дерево, GiST, GIN. При необхідності можна створити нові типи індексів.
Багатоверсійність (MVCC)
PostgreSQL підтримує одночасну модифікацію БД декількома користувачами за допомогою механізму Multiversion Concurrency Control (MVCC). Завдяки цьому виконуються вимоги ACID, і практично відпадає потреба в блокуванні зчитування.
Типи даних
PostgreSQL підтримує великий набір вбудованих типів даних:
- Числові типи
- Цілі
- З фіксованою крапкою
- З нефіксованою крапкою
- Грошовий тип
- Символьні типи довільної довжини
- Двійкові типи (включаючи BLOB)
- Типи «дата/час»
- Булевий тип
- Перерахування
- Геометричні примітиви
- Мережеві типи
- IP і IPv6-адреси
- CIDR-формат
- МАС-адреса
- UUID-ідентификатор
- XML-дані
- JSON-дані
- Масиви
- OID-типи
- Псевдотипи
Крім того, користувач може самостійно створювати нові необхідні йому типи та програмувати для них механізми індексування за допомогою GiST.
Об'єкти користувача
PostgreSQL може бути розширено користувачем для власних потреб практично в будь-якому аспекті. Є можливість додавати власні:
- Перетворення типів
- Типи даних
- Домени (для користувача типи з самого початку з накладеними обмеженнями)
- Функції (включаючи )
- Індекси
- Оператори (включаючи перевизначення вже існуючих)
- Процедурні мови
Успадкування
Таблиці можуть успадковувати характеристики та набори полів від інших таблиць (батьківських). При цьому дані, які додаються до породженої таблиці, автоматично будуть брати участь (якщо це не вказано окремо) в запитах до батьківської таблиці. Цей функціонал в поточний час не є повністю завершеним. Однак він достатній для практичного використання.
Тригери
Тригери визначаються як функції, що ініціюються DML-операціями. Наприклад, операція INSERT може запускати тригер, що перевіряє доданий запис на відповідність певним умовам. Тригери можна писати різними мовами програмування. Вони пов'язані з визначеною таблицею. Множинні тригери виконуються в алфавітному порядку.
Інші можливості
- Дотримання принципів ACID
- Відповідність стандартам ANSI SQL-92 і SQL-99
- Підтримка запитів з OUTER JOIN, UNION, UNION ALL, EXCEPT і підзапитів
- Послідовності
- Контроль цілісності
- Реплікація
- Загальні табличні вирази й рекурсивні запити
- Аналітичні функції
- Підтримка Unicode (UTF-8)
- Підтримка регулярних виразів у стилі Perl
- Вбудована підтримка SSL і Kerberos
- Протокол поділюваних блокувань
- Завантажувані розширення, підтримують SHA1, MD5, XML і іншу функціональність (API відкритий)
- Засоби для генерації сумісного з іншими системами SQL-коду та імпорту з інших систем
Властивості
Архітектура та масштабованість
PostgreSQL дотримується моделі клієнт-сервер, де сервер бази даних працює як окремий процес і обробляє кілька клієнтських підключень. Пропонує розширені функції та підтримує великомасштабні високопродуктивні системи БД. Розроблений для обробки складних робочих навантажень і може добре масштабуватися за допомогою правильної конфігурації.
Одночасність і транзакції
Підтримує одночасні транзакції з керуванням паралельним доступом за допомогою багатоверсійності (MVCC), що дозволяє кільком клієнтам читати та записувати дані одночасно. Забезпечує послідовність транзакцій, ізоляцію та довговічність (властивості ACID) для надійної цілісності даних.
Набір функцій і сумісність з SQL
Пропонує повний набір функцій, включаючи розширену підтримку SQL, складні типи даних, збережені процедури, тригери, перегляди, повнотекстовий пошук, підтримку JSON тощо. Відповідає стандарту SQL і підтримує різні розширення та додаткові функції.
Розгортання та конфігурація
Потрібен окремий процес встановлення та налаштування, оскільки postgreSQL працює як окремий сервер бази даних. Може бути розгорнутий на різних платформах і дозволяє точно налаштовувати параметри сервера для оптимальної продуктивності.
Продуктивність і масштабованість
PostgreSQL призначений для ефективної обробки великих БД і складних робочих навантажень. Забезпечує надійну оптимізацію продуктивності, механізми індексування та можливості планування запитів. За належної конфігурації та індексування може обробляти великі обсяги даних і підтримувати одночасний доступ кількох клієнтів.
Див. також
Примітки
- https://www.postgresql.org/docs/current/history.html
- https://github.com/postgres/postgres
- The postgres Open Source Project on Open Hub: Languages Page — 2006.
- . Crynwr. 18 лютого 2010. Архів оригіналу за 8 серпня 2016. Процитовано 18 лютого 2010.
- . Open Source Initiative. 20 лютого 2010. Архів оригіналу за 22 травня 2020. Процитовано 20 лютого 2010.
- . PostgreSQL Global Development Group. Архів оригіналу за 7 жовтня 2013. Процитовано 20 вересня 2010.
- . Архів оригіналу за 17 вересня 2009. Процитовано 14 серпня 2006.
Посилання
- http://www.postgresql.org/ [ 24 лютого 2011 у Wayback Machine.] (англ.) офіційний сайт PostgreSQL
Це незавершена стаття про програмне забезпечення. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
PostgreSQL vimovlyayetsya Post gres K yu el abo postgres ob yektno relyacijna sistema keruvannya bazami danih SKBD Ye alternativoyu yak komercijnim SKBD Oracle Database Microsoft SQL Server IBM DB2 ta inshi tak i SKBD z vidkritim kodom MySQL Firebird SQLite PostgreSQLTipSistema keruvannya bazami danih ServerAvtorMajkl Stounbrejker 1 RozrobnikiGlobalna grupa rozrobnikiv PostgreSQLStabilnij vipusk14 1 11 listopada 2021 2 roki tomu 2021 11 11 Operacijna sistemaUnix Linux WindowsMova programuvannyaC 2 3 LicenziyaPostgreSQL licenseRepozitorijgit postgresql org gitweb p postgresql gitVebsajtwww postgresql org Mediafajli u Vikishovishi Porivnyano z inshimi proyektami z vidkritim kodom takimi yak Apache FreeBSD abo MySQL PostgreSQL ne kontrolyuyetsya yakoyus odniyeyu kompaniyeyu yiyi rozrobka mozhliva zavdyaki spivpraci bagatoh lyudej ta kompanij yaki hochut vikoristovuvati cyu SKBD ta vprovadzhuvati u neyi najnovishi dosyagnennya Server PostgreSQL napisanij movoyu C Zazvichaj rozpovsyudzhuyetsya u viglyadi naboru tekstovih fajliv iz pochatkovim kodom Dlya instalyaciyi neobhidno vidkompilyuvati fajli na svoyemu komp yuteri i skopiyuvati v deyakij katalog Ves proces detalno opisanij v dokumentaciyi IstoriyaPostgreSQL shiroko rozpovsyudzhena sistema keruvannya bazami danih z vidkritim pochatkovim kodom Prototip buv rozroblenij v Kalifornijskomu universiteti Berkli v 1987 roci pid nazvoyu POSTGRES pislya chogo aktivno rozvivavsya i dopovnyuvavsya V chervni 1990 roku z yavilas druga versiya iz pereroblenoyu sistemoyu pravil manipulyuvannya ta roboti z tablicyami u 1991 roci tretya versiya iz dodanoyu pidtrimkoyu odnochasnoyi roboti kilkoh menedzheriv zberezhennya pokrashenim mehanizmom zapitiv i dopovnenoyu sistemoyu vnutrishnih pravil V cej chas POSTGRES vikoristovuvavsya dlya realizaciyi velikih sistem takih yak sistema analizu finansovih danih paket monitoringu funkcionalnosti potokiv baza danih vidstezhennya asteroyidiv sistema medichnoyi informaciyi kilka geografichnih sistem POSTGRES takozh vikoristovuvavsya yak navchalnij instrument v kilkoh universitetah 1992 roku POSTGRES stav golovnoyu SKBD naukovogo komp yuternogo proyektu Sequoia 2000 1993 roku kilkist koristuvachiv podvoyilas Stalo zrozumilo sho dlya pidtrimki j podalshogo rozvitku neobhidni veliki vitrati chasu na doslidzhennya baz danih tomu oficijno proyekt Berkli bulo zupineno na versiyi 4 2 1994 roku Andrew Yu i Jolly Chen dodali interpretator movi SQL vdoskonalili pochatkovij kod i viklali v Interneti svoyu realizaciyu pid nazvoyu Postgres95 1996 roku programnij produkt bulo perejmenovano na PostgreSQL iz pochatkovoyu versiyeyu 6 0 Podalshoyu pidtrimkoyu j rozrobkoyu zajmayetsya grupa specialistiv u galuzi baz danih yaki dobrovilno priyednalis do cogo proyektu Osnovni mozhlivostiFunkciyi Funkciyi dozvolyayut vikonuvati deyakij kod bezposeredno serverom bazi danih Ci funkciyi mozhut buti napisani na SQL yakij maye deyaki primitivni programni operatori taki yak galuzhennya ta cikli Ale gnuchkishoyu bude funkciya napisana na odnij iz mov programuvannya z yakimi PostgreSQL mozhe pracyuvati Do takih mov nalezhat Vbudovana mova yaka zvetsya en podibna do procedurnoyi movi PL SQL kompaniyi Oracle Movi rozrobki scenariyiv en Klasichni movi programuvannya C C Java za dopomogoyu PL Java Funkciyi mozhut vikonuvatis iz privileyami koristuvacha yakij yiyi viklikav abo iz privileyami koristuvacha yakij yiyi napisav Indeksi U PostgreSQL ye pidtrimka indeksiv nastupnih tipiv B derevo gesh R derevo GiST GIN Pri neobhidnosti mozhna stvoriti novi tipi indeksiv Bagatoversijnist MVCC PostgreSQL pidtrimuye odnochasnu modifikaciyu BD dekilkoma koristuvachami za dopomogoyu mehanizmu Multiversion Concurrency Control MVCC Zavdyaki comu vikonuyutsya vimogi ACID i praktichno vidpadaye potreba v blokuvanni zchituvannya Tipi danih PostgreSQL pidtrimuye velikij nabir vbudovanih tipiv danih Chislovi tipi Cili Z fiksovanoyu krapkoyu Z nefiksovanoyu krapkoyu Groshovij tip Simvolni tipi dovilnoyi dovzhini Dvijkovi tipi vklyuchayuchi BLOB Tipi data chas Bulevij tip Pererahuvannya Geometrichni primitivi Merezhevi tipi IP i IPv6 adresi CIDR format MAS adresa UUID identifikator XML dani JSON dani Masivi OID tipi Psevdotipi Krim togo koristuvach mozhe samostijno stvoryuvati novi neobhidni jomu tipi ta programuvati dlya nih mehanizmi indeksuvannya za dopomogoyu GiST Ob yekti koristuvacha PostgreSQL mozhe buti rozshireno koristuvachem dlya vlasnih potreb praktichno v bud yakomu aspekti Ye mozhlivist dodavati vlasni Peretvorennya tipiv Tipi danih Domeni dlya koristuvacha tipi z samogo pochatku z nakladenimi obmezhennyami Funkciyi vklyuchayuchi Indeksi Operatori vklyuchayuchi pereviznachennya vzhe isnuyuchih Procedurni movi Uspadkuvannya Tablici mozhut uspadkovuvati harakteristiki ta nabori poliv vid inshih tablic batkivskih Pri comu dani yaki dodayutsya do porodzhenoyi tablici avtomatichno budut brati uchast yaksho ce ne vkazano okremo v zapitah do batkivskoyi tablici Cej funkcional v potochnij chas ne ye povnistyu zavershenim Odnak vin dostatnij dlya praktichnogo vikoristannya Trigeri Trigeri viznachayutsya yak funkciyi sho iniciyuyutsya DML operaciyami Napriklad operaciya INSERT mozhe zapuskati triger sho pereviryaye dodanij zapis na vidpovidnist pevnim umovam Trigeri mozhna pisati riznimi movami programuvannya Voni pov yazani z viznachenoyu tabliceyu Mnozhinni trigeri vikonuyutsya v alfavitnomu poryadku Inshi mozhlivostiDotrimannya principiv ACID Vidpovidnist standartam ANSI SQL 92 i SQL 99 Pidtrimka zapitiv z OUTER JOIN UNION UNION ALL EXCEPT i pidzapitiv Poslidovnosti Kontrol cilisnosti Replikaciya Zagalni tablichni virazi j rekursivni zapiti Analitichni funkciyi Pidtrimka Unicode UTF 8 Pidtrimka regulyarnih viraziv u stili Perl Vbudovana pidtrimka SSL i Kerberos Protokol podilyuvanih blokuvan Zavantazhuvani rozshirennya pidtrimuyut SHA1 MD5 XML i inshu funkcionalnist API vidkritij Zasobi dlya generaciyi sumisnogo z inshimi sistemami SQL kodu ta importu z inshih sistemVlastivostiArhitektura ta masshtabovanist PostgreSQL dotrimuyetsya modeli kliyent server de server bazi danih pracyuye yak okremij proces i obroblyaye kilka kliyentskih pidklyuchen Proponuye rozshireni funkciyi ta pidtrimuye velikomasshtabni visokoproduktivni sistemi BD Rozroblenij dlya obrobki skladnih robochih navantazhen i mozhe dobre masshtabuvatisya za dopomogoyu pravilnoyi konfiguraciyi Odnochasnist i tranzakciyi Pidtrimuye odnochasni tranzakciyi z keruvannyam paralelnim dostupom za dopomogoyu bagatoversijnosti MVCC sho dozvolyaye kilkom kliyentam chitati ta zapisuvati dani odnochasno Zabezpechuye poslidovnist tranzakcij izolyaciyu ta dovgovichnist vlastivosti ACID dlya nadijnoyi cilisnosti danih Nabir funkcij i sumisnist z SQL Proponuye povnij nabir funkcij vklyuchayuchi rozshirenu pidtrimku SQL skladni tipi danih zberezheni proceduri trigeri pereglyadi povnotekstovij poshuk pidtrimku JSON tosho Vidpovidaye standartu SQL i pidtrimuye rizni rozshirennya ta dodatkovi funkciyi Rozgortannya ta konfiguraciya Potriben okremij proces vstanovlennya ta nalashtuvannya oskilki postgreSQL pracyuye yak okremij server bazi danih Mozhe buti rozgornutij na riznih platformah i dozvolyaye tochno nalashtovuvati parametri servera dlya optimalnoyi produktivnosti Produktivnist i masshtabovanist PostgreSQL priznachenij dlya efektivnoyi obrobki velikih BD i skladnih robochih navantazhen Zabezpechuye nadijnu optimizaciyu produktivnosti mehanizmi indeksuvannya ta mozhlivosti planuvannya zapitiv Za nalezhnoyi konfiguraciyi ta indeksuvannya mozhe obroblyati veliki obsyagi danih i pidtrimuvati odnochasnij dostup kilkoh kliyentiv Div takozhPostgreSQL StudioPrimitkihttps www postgresql org docs current history html https github com postgres postgres The postgres Open Source Project on Open Hub Languages Page 2006 d Track Q124688 Crynwr 18 lyutogo 2010 Arhiv originalu za 8 serpnya 2016 Procitovano 18 lyutogo 2010 Open Source Initiative 20 lyutogo 2010 Arhiv originalu za 22 travnya 2020 Procitovano 20 lyutogo 2010 PostgreSQL Global Development Group Arhiv originalu za 7 zhovtnya 2013 Procitovano 20 veresnya 2010 Arhiv originalu za 17 veresnya 2009 Procitovano 14 serpnya 2006 Posilannyahttp www postgresql org 24 lyutogo 2011 u Wayback Machine angl oficijnij sajt PostgreSQL Ce nezavershena stattya pro programne zabezpechennya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi