LINUX.ORG.RU

PostgreSQL 9.6

 


2

3

29 сентября был представлен новый выпуск реляционной СУБД PostgreSQL.

Данный релиз предоставляет пользователям широкие возможности как для вертикального, так и для горизонтального масштабирования нагрузок на базы данных.

Помимо многочисленных улучшений производительности, версия 9.6 содержит возможность параллелизации запросов, усовершенствование синхронной репликации и фразовый поиск.

Добавленная поддержка параллелизации некоторых операций позволяет одновременно использовать несколько или даже все доступные ядра процессора для ускорения ответа на запрос. На данный момент имеется возможность параллелизации последовательного чтения (таблиц), операций соединения и агрегирования, что, в зависимости от конкретной ситуации и доступности ядер, делает возможным ускорение обработки запросов вплоть до 32 раз при работе с Big Data.

В механизм синхронной репликации были добавлены две новые опции, с помощью которых можно обеспечить согласование операций чтения в масштабе всего кластера баз данных. Во-первых, теперь стало возможным конфигурировать группы реплик, работающих с синхронной репликацией. Во-вторых, режим remote_apply позволяет получить согласованное представление данных на масштабе нескольких узлов. Всё это работает на основе встроенного механизма репликации и предназначено для получения массива «идентичных» узлов серверов баз данных для балансировки нагрузки, содержащей операции чтения.

Также системой полнотекстового поиска в PostgreSQL теперь поддерживается так называемый «фразовый поиск». С его помощью пользователи, используя GIN-индексы, могут находить точные совпадения по фразам, а также документы, где слова встречаются на заданном удалении друг от друга. Получив также новые возможности тонкой настройки полнотекстового поиска, PostgreSQL становится высококачественной системой «гибридного поиска», что подразумевает возможность одновременного использования различных типов данных и операций поиска по ним: реляционного, JSON и полнотекстового.

Благодаря обратной связи и тестированию на базах данных большого объёма проекту успешно удалось улучшить производительность и юзабилити. Репликация, операции агрегирования, индексирования, сортировки и хранимые процедуры стали эффективнее, а сам PostgreSQL теперь более продуктивно использует ресурсы при работе с новыми версиями Linux. Накладные расходы при администрировании больших таблиц и работе с нагрузками сложного профиля также уменьшились — в частности, за счёт улучшений механизма VACUUM.

Стоит также упомянуть, что 4 октября состоится очередная встреча российского сообщества #RuPostgres (#PostgreSQLRussia) в офисе Яндекса в Москве. Планируется онлайн-трансляция. Участие бесплатное, необходима предварительная регистрация.

Более подробную информацию о новых возможностях PostgreSQL (на английском языке) можно найти по ссылкам ниже.

>>> Информация об изменениях

>>> Что нового в PostgreSQL 9.6

>>> Матрица возможностей

>>> Основные возможности (слайды)

>>> «Заглянем слону под хобот: 9.6» (видео)

>>> Производительность PostgreSQL 9.6 (видео)

>>> Вебинар с обзором новинок от Брюса Момджана

>>> Официальный пресс-релиз

Ура!

Но самое интересное в PostgreSQL 10.0 - будет огромным шагом вперед!

uspen ★★★★★ ()

Уже обновился и снял новые бэкапы с 9.6.

anonymous_sama ★★★★★ ()
Ответ на: Ура! от uspen

Что там будет?

foror ★★ ()
Ответ на: Ура! от uspen

Ты уже знаешь, что будет в 10?

GoNaX ★★★ ()

Молодцы, очень качественная и фичастая РСУБД для нищебродов, иначе пришлось бы юзать всякие недомаскулы.

foror ★★ ()

в тестировании принимают участие серьезные игроки - ibm, amazon

kto_tama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

Уже обновился и снял новые бэкапы с 9.6.

Поздравляю!

Обновлялся с помощью pg_upgrade? Размер базы, нагрузка, сколько реплик? Чем backup делаешь?

uspen ★★★★★ ()
Ответ на: комментарий от foror

Молодцы, очень качественная и фичастая РСУБД для нищебродов, иначе пришлось бы юзать всякие недомаскулы.

Yandex - вы нищеброды. Бохатые юзают Оракель.

FilosofeM ()
Ответ на: комментарий от FilosofeM

Угу, посчитай, сколько нужно вагонов денег, чтобы завести маленький кластерок под один из десятка проектов... Сумма порядка десятков Миллиардов рублей. В год.

uspen ★★★★★ ()
Последнее исправление: uspen (всего исправлений: 1)
Ответ на: комментарий от uspen

Базы маленькие (но с бэкапами занимают немало, впрочем это и причина почему пришлось переходить на incremental и differential бэкапы), и постгресов несколько. Бэкаплю с pgbackrest, который к слову недавно наконец появился в репозитории ps. Настройки такие, для толстых и для баз поменьше:

retention-full=1
retention-diff=2
retention-archive-type=incr
retention-archive=2
retention-full=2
retention-diff=2
retention-archive-type=incr
retention-archive=2
Репликации нет, для меня это слишком накладно. Бэкапы я собираю локально и синхронизирую syncthing, и уже там где еще их дополнительно бэкаплю.

anonymous_sama ★★★★★ ()
Последнее исправление: anonymous_sama (всего исправлений: 1)

Интересно, надо попробовать

А ещё забавно, что они в основную ветку забирают фичи из XC/XL

EuGeneus ★★ ()

реляционной СУБД PostgreSQL

Объектно-реляционной СУБД PostgreSQL. // fixed ©

quickquest ★★★★★ ()
Ответ на: комментарий от EuGeneus

Это не забавно, это opensource. И хорошо, что забирают, значит инструменты рабочие

uspen ★★★★★ ()

как обстоят дела с BDR?

snaf ★★★★★ ()
Ответ на: комментарий от Skullnet

А современный метод - на javascript/lua делать джойны и селекты? Или я что-то пропустил?

foror ★★ ()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от quickquest

За эти «15 years of active development» они так и не сделали нормальное наследование таблиц.

foror ★★ ()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Современный метод - это интуитивно понятный синтаксис языка.

Skullnet ()
Ответ на: комментарий от Skullnet

интуитивно понятный синтаксис языка

По таким принципам разрабатывали SQL.

Современный метод

... это Rust.

winlook38 ★★ ()
Ответ на: комментарий от Skullnet

Ладно синтаксис, вот бы хотя бы трёхэтажные запросы друг в друга вкладывать не надо было. Как пещерные люди.

anonymous ()
Ответ на: комментарий от anonymous

Чем вам не нравиться следующее?

with x (
    select id, nnn 
    from c 
    where d
)
select x.id, y.data + x.nnn
from x
join y on (x.a = y.id)
anonymous ()
Ответ на: комментарий от anonymous_sama

Уже обновился и снял новые бэкапы с 9.6.

Очень не профессионально с твой стороны.

autonomous ★★★★ ()
Ответ на: комментарий от anonymous

А теперь преврати свой with в параметризованный запрос. Что-что? Не можешь?

А где же возможности для декомпозиции запросов? А ну да, это же SQL :)

anonymous ()
Ответ на: комментарий от FilosofeM

Yandex - вы нищеброды. Бохатые юзают Оракель.

И беднеют (а Ракель бохатеет).

dmxrand ()
Ответ на: комментарий от autonomous

Так 9.6 stable теперь уже. После того как версия становится стабильной, уже формат базы не меняется. И старые бэкапы никуда не деваются.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от Skullnet

SQL язык - это как Cobol для БД.

Да давно уже пора убрать к черту реляционную теорию и требования в таких базах данных. Они держатся ради лишь коммерческих интересов.

bookman900 ★★★★★ ()
Ответ на: комментарий от winlook38

По таким принципам разрабатывали SQL.

JOIN во все поля?)

bookman900 ★★★★★ ()
Ответ на: комментарий от anonymous

В документно-ориентированных и Cassandra это можно сделать несколько проще...

PS. При условии, что это поле будет бизнес-аналитики, где для андана нужны лишь значения.

bookman900 ★★★★★ ()
Ответ на: комментарий от uspen

Эпохально...

Ораклокапец, адназначна! :)

gns ★★★★ ()
Ответ на: комментарий от bookman900

В документно-ориентированных и Cassandra это можно сделать несколько проще...

только с этим «проще» никуда, где целостность данных критична, не получится. есть такая ниша, где на это можно положить, но на то она и ниша.

anonymous ()
Ответ на: комментарий от gns

PostgreSQL это одно из тех приложение которые нужно держать актуальным, производительность с каждой версией только улучшается. Плюс это теперь стабильная версия, и ее следует использовать по умолчанию, ну и в случае каких-либо дыр, именно 9.6 будут патчить и собирать в бинарных сборках в ps репозитории в первую очередь. Плюс если не обновить сразу, то потом версия все-равно прилетит, и будет ps сразу на двух портах висеть во всех машинах с ps.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

А объем базы какой, если не секрет? Сколько времени занял апгрейд, и как его продвинутые граждане осуществляют, без останова сервера на регламентные работы?

AlexM ★★★★★ ()
Последнее исправление: AlexM (всего исправлений: 1)
Ответ на: комментарий от FilosofeM

угадай, с какой субд яндекс перелез на постгрес.

anonymous ()
Ответ на: комментарий от AlexM

Не знаю насколько это свер корректно, но я делают так:

apt-get -y install postgresql-9.6
Потом проверяю, что новый postgres висит на дефолтном порте (я использую нестандартный порт, но даже если старый ps висит на стандартном, то новый просто стартанет на следующем)
sudo su - postgres
pg_dumpall -p someport | psql -d postgres -p 5432
Потом я сверяю в кофиги в meld, чтобы случайно ничего не пропустить. Также я помимо старого конфига, вношу изменения с pg_hba.conf в новый ps. У меня только в них изменения. Далее я останавливаю старый ps c systemctl stop postgresql@9.5-main.service, проверяю, что все работает с новым. Далее я меняю 5 на 6 в pgbackrest.conf. Переношу старые бэкапы (которые уже синхронизированы в другое место) в другой каталог, захожу под postgres и делаю новые бэкапы. После я удаляю перенесенную старую копию бэкапов и старый ps.

anonymous_sama ★★★★★ ()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от anonymous_sama

Если будете измерять разницу в производительности, то поделитесь результатом. Даже интересно.

gns ★★★★ ()
Ответ на: комментарий от gns

А как кроме как через ODBC зацепиться из PostgreSQL в IBM DB2?

Хочу поэкспериментировать с DB2 в области SEO, у бесплатного DB2 очень хорошие лимиты по сравнению с другими конкурентами, и более менее знаком с этой СУБД,

Под PostgreSQL тоже немного программировал, меня он привлекает своими возможностями делать линки в разные СУБД, но по DB2 не нашел ничего кроме варианта ODBC,

а в MSSQL DB2 легко цепляется:
http://aulix.com/sp_addlinkedserver-oledb-db2oledb-ibmadb2-ibm-db2-luw

sanyock ★★ ()
Последнее исправление: sanyock (всего исправлений: 1)

Кто-нибудь может мне объяснить, чем оно лучше MySQL? Не троллинга ради. Просто сейчас мне на проект поставили мускуль. Я по инерции сказал, что хочу постгрес. А аргументы все свелись к «opinion based». Чем плох мускуль и хорош сабж так и остается для меня загадкой.

unt1tled ★★★★ ()
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от sanyock

Я не знаком с DB2, и как-то меня никогда не занимал вопрос кросс-запросов к другим базам. Даже идей нет, извините. Постгрес умеет цепляться за удаленный постгрес черех plproxy. Погуглите, гугль говорит, что есть какой-то dblink...

gns ★★★★ ()
Ответ на: комментарий от unt1tled

Краткий ответ — смотря для чего, и что за проект. В Вашем случае, может и не лучше... :)

gns ★★★★ ()
Ответ на: комментарий от anonymous_sama

А поделитесь нормальным маном по настройке Posgresql для web, где параллельных запросов от силы 2-3. Т.е. основная функция - это хранение, выборки последовательные из разных таблиц, и чтобы жрала 80% ram сразу под индексы, шоб летало, типа как редис :)

menangen ★★★★★ ()

Нашей команде активно рекламируют nosql aerospike. Чем оно лучше couchbase или редиса?

menangen ★★★★★ ()
Ответ на: комментарий от anonymous_sama

Эм, а я правильно понимаю, что в промежутке между началом pg_dumpall и подъемом нового инстанса старый инстанс для клиентов недоступен [на запись]? Или, все же, в процессе участвуют какие-то неупомянутые механизмы, позволяющие дотащить новые транзакции до нового инстанса после отработки pg_dump'а и остальных процедур?

AlexM ★★★★★ ()
Ответ на: комментарий от AlexM

pg_dump does not block other users accessing the database (readers or writers).

Это из man.

А поделитесь нормальным маном по настройке Posgresql для web, где параллельных запросов от силы 2-3. Т.е. основная функция - это хранение, выборки последовательные из разных таблиц, и чтобы жрала 80% ram сразу под индексы, шоб летало, типа как редис :)

Лучше спросить в pg admin рассылки, там люди которые живут pg. А так, загугли postgres tuning Kosmodemiansky, лучше взять слайды, смотреть записью дольше. Там базовые вещи от которых выиграет любая установка pg. Вроде как: numa, reclaim_mode, autogroup, migration_cost. Настройка checkpoint'ов. Ну и совсем базовые как swappiness, dirty. От себя добавлю что что-бы pg использовала hugepages, нужно их сначала выделить. Ну и если это ext4/xfs, то там noatime, nobarrier. Если это btrfs, то это еще и ssd, если это ssd конечно, ну и стоит посмотреть что включено btrfstune, и если нужно включить, сделать balance. Если это zfs то отключить prefetch. Вот только pg не очень на cow. Хотя btrfs в общем, не как для pg, а просто как для сервера с множеством контейнеров на ssd, очень меня приятно удивила.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

pg_dump does not block other users accessing the database (readers or writers).

Естественно, не блокирует. Но будут ли в дампе транзакции, которые случились после начала дампа?

AlexM ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.