PostgreSQL (вимовляється «Пост-грес-К'ю-ель»[8], або «постгрес») —об'єктно-реляційнасистема керування базами даних (СКБД). Є альтернативою як комерційним СКБД (Oracle Database,Microsoft SQL Server,IBM DB2 та інші), так і СКБД з відкритим кодом (MySQL,Firebird,SQLite).
Порівняно з іншими проєктами з відкритим кодом, такими як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 може працювати. До таких мов належать:
Функції можуть виконуватись із привілеями користувача, який її викликав, або із привілеями користувача, який її написав.
У PostgreSQL є підтримка індексів наступних типів:B-дерево,геш,R-дерево, GiST, GIN. При необхідності можна створити нові типи індексів.
PostgreSQL підтримує одночасну модифікацію БД декількома користувачами за допомогою механізму Multiversion Concurrency Control (MVCC). Завдяки цьому виконуються вимогиACID, і практично відпадає потреба в блокуванні зчитування.
PostgreSQL підтримує великий набір вбудованих типів даних:
- Числові типи
- Цілі
- З фіксованою крапкою
- З нефіксованою крапкою
- Грошовий тип
- Символьні типи довільної довжини
- Двійкові типи (включаючи BLOB)
- Типи «дата/час»
- Булевий тип
- Перерахування
- Геометричні примітиви
- Мережеві типи
- IP і IPv6-адреси
- CIDR-формат
- МАС-адреса
- UUID-ідентифікатор
- XML-дані
- JSON-дані
- Масиви
- OID-типи
- Псевдотипи
Крім того, користувач може самостійно створювати нові необхідні йому типи та програмувати для них механізми індексування за допомогою GiST.
PostgreSQL може бути розширено користувачем для власних потреб практично в будь-якому аспекті. Є можливість додавати власні:
- Перетворення типів
- Типи даних
- Домени (для користувача типи з самого початку з накладеними обмеженнями)
- Функції (включаючиагрегатні)
- Індекси
- Оператори (включаючи перевизначення вже існуючих)
- Процедурні мови
Таблиці можуть успадковувати характеристики та набори полів від інших таблиць (батьківських). При цьому дані, які додаються до породженої таблиці, автоматично будуть брати участь (якщо це не вказано окремо) в запитах до батьківської таблиці.Цей функціонал в поточний час не є повністю завершеним. Однак він достатній для практичного використання.
Тригери визначаються як функції, що ініціюються DML-операціями. Наприклад, операція INSERT може запускати тригер, що перевіряє доданий запис на відповідність певним умовам. Тригери можна писати різними мовами програмування.Вони пов'язані з визначеною таблицею. Множинні тригери виконуються в алфавітному порядку.
- Дотримання принципів ACID
- Відповідність стандартам ANSISQL-92 іSQL-99
- Підтримка запитів з OUTER JOIN, UNION, UNION ALL, EXCEPT і підзапитів
- Послідовності
- Контроль цілісності
- Реплікація
- Загальні табличні вирази й рекурсивні запити
- Аналітичні функції
- Підтримка Unicode (UTF-8)
- Підтримкарегулярних виразів у стилі Perl
- Вбудована підтримкаSSL іKerberos
- Протокол поділюваних блокувань
- Завантажувані розширення, підтримуютьSHA1,MD5, XML і іншу функціональність (API відкритий)
- Засоби для генерації сумісного з іншими системами SQL-коду та імпорту з інших систем
PostgreSQL дотримується моделіклієнт-сервер, де сервер бази даних працює як окремий процес і обробляє кілька клієнтських підключень. Пропонує розширені функції та підтримує великомасштабні високопродуктивні системи БД. Розроблений для обробки складних робочих навантажень і може добре масштабуватися за допомогою правильної конфігурації.
Підтримує одночасні транзакції з керуванням паралельним доступом за допомогою багатоверсійності (MVCC), що дозволяє кільком клієнтам читати та записувати дані одночасно. Забезпечує послідовність транзакцій, ізоляцію та довговічність (властивостіACID) для надійної цілісності даних.
Пропонує повний набір функцій, включаючи розширену підтримку SQL, складні типи даних, збережені процедури, тригери, перегляди,повнотекстовий пошук, підтримку JSON тощо. Відповідає стандарту SQL і підтримує різні розширення та додаткові функції.
Потрібен окремий процес встановлення та налаштування, оскільки postgreSQL працює як окремий сервер бази даних. Може бути розгорнутий на різних платформах і дозволяє точно налаштовувати параметри сервера для оптимальної продуктивності.
PostgreSQL призначений для ефективної обробки великих БД і складних робочих навантажень. Забезпечує надійну оптимізацію продуктивності, механізми індексування та можливості планування запитів. За належної конфігурації та індексування може обробляти великі обсяги даних і підтримувати одночасний доступ кількох клієнтів.