Автор Тема: PostgreSQL  (Прочитано 1075 раз)

Spileton

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
PostgreSQL
« : 24 Декабрь 2015, 16:18:13 »
Объектно-реляционная система управления базами данных (ОРСУБД). Альтернатива коммерческим (Oracle Database, Microsoft SQL Server, IBM DB2) и свободным СКБД (MySQL, Firebird, SQLite).

По сравнению с другими проектами с открытым кодом, такими как Apache, FreeBSD или MySQL, PostgreSQL не контролируется какой-либо одной компанией, его разработка возможна благодаря сотрудничеству многих людей и компаний, которые хотят использовать эту СУБД и внедрять в нее новейшие достижения. Сервер PostgreSQL написан на языке C . Обычно распространяется в виде набора текстовых файлов исходным кодом . Для инсталляции необходимо откомпилировать файлы на своем компьютере и скопировать в некоторый каталог. Весь процесс подробно описан в документации.

Функции.

Функции позволяют выполнять некоторый код непосредственно сервером базы данных. Эти функции могут быть написаны на SQL, который имеет некоторые примитивные программные операторы, такие как ветвления и циклы. Но гибкой будет функция написана в одной из языков программирования, с которыми PostgreSQL может работать. К таким языкам относятся:
Встроенный язык  PL/pgSQL, подобный процедурному языка PL/SQL компании Oracle.
Языки разработки сценариев: PL/Perl, PL/Python, PL/Tcl, PL/Ruby, PL/sh.
Классические языки программирования C, C++, Java (с помощью PL/Java ).
Функции могут быть написаны, а затем выполняться с привилегиями пользователя, который ее вызвал, или с привилегиями пользователя, который ее написал.

Индексы.
PostgreSQL поддерживает индексы следующих типов: B-дерево, хэш, R-дерево, GiST, GIN. При необходимости можно создать новые типы индексов.

Многоверсионность (MVCC)
PostgreSQL поддерживает одновременную модификацию БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому выполняются требования ACID и практически отпадает необходимость в блокировании считывания.

Типы данных PostgreSQL.
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 проблем, одна ошибка на 4000 строк кода;
FreeBSD (целиком) - 306 проблем, одна ошибка на 4000 строк кода;
Linux (только ядро) - 950 проблем, одна ошибка на 10 000 строк кода.


Оригинал статьи: https://uk.wikipedia.org/wiki/PostgreSQL

Zeboton

  • Администратор
  • Старожил
  • *****
  • Сообщений: 338
    • Просмотр профиля
Re: PostgreSQL
« Ответ #1 : 26 Декабрь 2015, 15:04:11 »
Поддерживаю. Перешёл для всех проектов ( личных и рабочих ) с MySQL на PostgreSQL ещё в 2012 году. Я не только ни разу не пожалел об этом, но и много раз радовался этому решению. Например, наличие очень мощного полнотекстового поиска из коробки меня очень выручило.

По началу sequences непривычно, но потом понимаешь на сколько они удобные.

Единственное, что не очень удобно - переход с версии на версию, например, с 9.3 на 9.4.