PostgreSQL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
PostgreSQL
Pg logo.png
Розробник(и) Глобальна група розробників PostgreSQL
Стабільний випуск 9.4 (18 грудня 2014; 2 дні тому)
Операційна система Unix, Linux, Windows
Тип Система керування базами даних, Сервер
Ліцензія PostgreSQL license[1][2][3]
Сайт www.postgresql.org

PostgreSQL (вимовляється «Пост-грес-К'ю-ель», або «постгрес» (приклад вимови 5,6 Кбайт Mp3)) — об'єктно-реляційна система керування базами даних (СКБД). Є альтернативою як комерційним СКБД (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. При необхідності можна створити нові типи індексів.

Багатоверсійність (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 було знайдено 20 проблемних місць на 775 000 рядків вихідного коду (в середньому, одна помилка на 39 000 рядків коду). Для порівняння:

  • MySQL — 97 проблем, одна помилка на 4 000 рядків коду;
  • FreeBSD (цілком) — 306 проблем, одна помилка на 4 000 рядків коду;
  • Linux (тільки ядро) — 950 проблем, одна помилка на 10 000 рядків коду.

Виноски[ред.ред. код]

  1. «PostgreSQL licence approved by OSI». Crynwr. 2010-02-18. Процитовано 2010-02-18. 
  2. «OSI PostgreSQL licence». Open Source Initiative. 2010-02-20. Процитовано 2010-02-20. 
  3. «License». PostgreSQL Global Development Group. Процитовано 2010-09-20. 

Посилання[ред.ред. код]