Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ibs / LB / ЛБ / ЛР 7 Основные возможности PostgreSQL.doc
Скачиваний:
63
Добавлен:
29.03.2016
Размер:
115.71 Кб
Скачать

Типы данных, создаваемые пользователем

С помощью команды CREATE TYPE пользователи могут создавать новые типы данных для своих нужд.

Локализация

PostgreSQL работает с локализацией, установленной в операционной системе и отвечающей стандарту POSIX. На практике это означает возможность работы с несколькими десятками языков, в том числе и с русским языком во всех возможных кодировках: koi8-r, cp1251, iso8859-5 и UTF-8. Возможность корректной работы PostgreSQL с конкретной кодировкой зависит от корректной поддержки этой кодировки средствами самой операционной системы.

Благодаря использованию библиотеки gettext, сообщения об ошибках и в утилитах переведены на многие языки, в том числе и на русский.

Языки, которые могут использоваться для написания хранимых процедур (функций)

  • Java

  • Perl

  • Python

  • Ruby

  • Tcl

  • C/C++

  • PL/pgSQL

Функции и операторы

Для каждого из перечисленных выше типов существует свой набор функций и операторов, который делает работу с данными этого типа максимально удобной, гибкой и производительной. Перечисление этих функций и операторов занимает довольно солидный объём документации, поставляемой с PostgreSQL, поэтому подробности смотрите там.

Индексы

PostgreSQL предлагает 4-ре типа индексов: B-tree, Hash, GiST и GIN. Каждый тип индекса имеет свой алгоритм реализации, что позволяет существенно увеличить быстродействие, если для определённого вида данных выборать определённый типа индекса.

PostgreSQL позволяет создавать индексы с использованием выражений, например: CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));

PostgreSQL позволяет создавать частичные (partial) индексы, используя выражение WHERE, например: CREATE INDEX orders_unbilled_index ON orders (order_nr)   WHERE billed IS NOT true;.

Полнотекстовый поиск

Начиная с версии 8.3 в ядро PostgreSQL включен функционал полнотекстового поиска (который раньше поставлялся в виде отдельного модуля-расширения).

Полнотекстовый поиск позволяет создавать запросы к текстовым документами, такие как: "найти все документы, содержащие определённые слова и выдать их в определённом порядке ", где и сами запросы и порядок выдачи могут гибко настраиваться в зависимости от конкретных потребностей.

Многоверсионный контроль конкурентых транзакций и изоляция транзакций

В PostgreSQL реализован (Multiversion Concurrency Control, MVCC) - многоверсионный контроль конкурентных транзакций, который управляет конкурентным доступом к данным на многоверсионной основе. На практике это означает, что при запросе к БД каждая транзакция видит как бы снимок данных (версию) на момент этого снимка, а не текущее состояние данных. Таким образом транзакции защищаются от просмотра нецелостных данных, которые могут ещё только формироваться другими конкурентными транзакциями в тех же самых строках таблицы. Этим же достигается изоляция транзакций для каждой сессии к БД. MMVC позволяет избегать методов явной блокировки, которые применяются в традиционных СУБД и таким образом, минимизирует блокировки данных и позволяет увеличить производительность в многопользовательской работе. Основное преимущество MMVC состоит в том, что чтение данных никогда не блокирует запись, а запись никогда не блокирует чтение.

Также в PostgreSQL реализованы традиционные схемы явных блокировок данных, применяющихся для изоляции транзаций, такие как:

  • блокировка на уровне таблицы

  • блокировка на уровне записи в таблице (строки)

  • advisory блокировки (для собственных блокировок на уровне приложений)

Также реализовано отслеживание deadlocks (взаимных блокировок)