Представлен релиз СУБД PostgreSQL 9.3
🕛 11.09.2013, 20:38
После года разработки представлен релиз новой стабильной ветки СУБД PostgreSQL 9.3. В новой версии появилась поддержка обновляемых представлений, добавлены функции и операторы для работы с данными в формате JSON, обеспечена возможность записи во внешние таблицы, добавлен драйвер для прозрачного доступа к данным на других серверах, обеспечена поддержка создания триггеров для обработки глобальных событий БД, реализован режим многопоточного выполнения pg_dump. Кроме продолжения работы по наращиванию функциональности в процессе подготовки нового выпуска большое внимание было уделено увеличению надёжности, отказоустойчивости и интеграции с другими СУБД. Основные улучшения: Возможность выполнять операции обновления, добавления и удаления данных (UPDATE, INSERT, DELETE) в представлениях (VIEW), формируемых на основании выборки через оператор SELECT и ранее доступных только на чтение. Применение операции UPDATE для представлений допускается с определёнными ограничениями, например, поддерживаются представления только с одной таблицей или другим представлением в блоке FROM, не содержащие в теле операций WITH, DISTINCT, GROUP BY, HAVING, LIMIT и OFFSET, и без использования UNION, INTERSECT и EXCEPT на первом уровне вложенности. Новая конструкция "MATERIALIZED VIEW", позволяющая определять представления с кэшированием заданного в представлении запроса в отдельной физической таблице с последующей выборкой данных из этой таблицы, вместо осуществление повторных запросов при каждом обращении к представлению; Включён дополнительный набор средств для преобразования и манипуляции данными в формате JSON. В частности в дополнение к ранее представленному типу данных JSON добавлены функции для генерации данных в формате JSON из данных в других форматах, функции парсинга данных в формате JSON и встроенные операторы для обработки JSON-данных, позволяющие извлекать поля, менять отдельные значения, создавать записи на основе JSON-данных; Доступные на запись внешние таблицы, позволяющие помещать данные в другие БД. "FOREIGN DATA WRAPPER" теперь поддерживает операции INSERT, UPDATE и DELETE; Средства для хранения контрольных сумм для контроля целостности данных в БД и выявления повреждений файловой системы; Новый драйвер pgsql_fdw для логического объединения содержимого БД на нескольких серверах, в том числе для организации бесшовного полного доступа к БД на других серверах PostgreSQL; Новый упрощённый синтаксис для определения рекурсивных представлений (CREATE RECURSIVE VIEW); Поддержка ключевого слова LATERAL для определения подзапросов в блоке FROM, ссылающихся на содержимое полей, полученных в процессе выполнения других подзапросов в процессе выполнения операций по слиянию таблиц (без LATERAL каждый из подзапросов выполняется независимо и не может учитывать данные других подзапросов); Реализация триггеров для обработки глобальных событий (event trigger). В отличие от обычных триггеров обработчики событий привязываются к БД, а не к таблицам и могут быть написаны только на процедурных языках, в том числе на Си, но не на SQL. Обработчики событий могут перехватывать любые операции и команды, в том числе CREATE, ALTER и DROP; Использование q-gram индексов (модуль pg_trgm) расширено на поиск по регулярным выражениям (операции LIKE/ILIKE могут использовать индексы, начиная с версии PostgreSQL 9.1); Произведен переход с использования SysV shared memory на POSIX shared memory и mmap, что упрощает установку и конфигурацию, и избавляет от необходимости настройки таких параметров, как SHMMAX и SHMALL. Значительно сокращено потребление разделяемой памяти (SysV shared memory), что избавляет пользователей крупных систем от дополнительного тюнинга; Сокращено время распространения реплик, а также значительно ускорена передача управления от запасного сервера к первичному. Переход от мастера к реплицированной системе производится менее чем за секунду. Ускорена и упрощена реконфигурация каскадных реплицированных систем после обработки отказа; Увеличена производительность и улучшена система блокировок для внешних ключей; Обеспечена возможность ускорения резервного копирования через запуск pg_dump в параллельном режиме, позволяющем выполнять бэкап одновременно нескольких таблиц; Поддержка разбиения конфигурации на серию отдельных файлов, размещаемые в одной директории и подключаемых через директиву 'include_dir'; Добавлена утилита pg_isready для проверки доступности БД; Новый оператор "COPY FREEZE" для минимизации нагрузки на систему ввода/вывода при копировании больших объемов данных; Возможность создания пользовательских фоновых обработчиков, для автоматизации выполнения операций с БД (например, выполнение мониторинга или запуск типовых операций через определённые интервалы времени); Новая директива lock_timeout для ограничения продолжительности ожидания освобождения блокировки.