The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Началось альфа-тестирование СУБД PostgreSQL 9.5

03.07.2015 12:11

Представлена альфа-версия СУБД PostgreSQL 9.5. Релиз ожидается осенью.

Среди добавленных улучшений (перевод подробного обзора основных новшеств):

  • Функциональность "UPSERT" (добавить-или-модифицировать), реализованная через новое выражение "INSERT ... ON CONFLICT DO NOTHING/UPDATE", позволяющая обработать ситуацию невозможности добавления данных через "INSERT", например, из-за нарушения условий уникальности или недопустимости значения одного из полей. Вместо вывода ошибки теперь можно игнорировать выполнение оператора или изменить связанные с ключевым полем данные (т.е. если запись уже существует, вместо INSERT выполнить UPDATE);
  • BRIN-индексы ("индексы блоковых зон", Block Range Index), позволяющие сверхкомпактно индексировать очень большие таблицы, без применения традиционных B-деревьев. Суть BRIN-индексов сводится к разбиению общего индекса на блоки, каждый из которых содержит данные индекса только для определённого диапазона значений. В тесте подобный метод оказался примерно в два раза медленнее b-деревьев при осуществлении операций выборки данных, но в 3-4 раза быстрее при создании и обновлении индекса, а также занял значительно меньше места на диске (64 Кб против 28 Мб);
  • Ограничение доступа на уровне строк (Row-Level Security, RLS). Доступ пользователей к данным в таблице теперь можно разграничивать на уровне отдельных строк, например, можно запретить определённой категории пользователей просмотр строк, в которых хранятся данные, добавленные другим пользователем. Для активации RLS следует использовать директиву "ALTER TABLE tablename ENABLE ROW LEVEL SECURITY", после чего следует задать правила доступа при помощи выражения "CREATE POLICY";
  • Новые функции и операторы для типа данных JSONB. Для изменения значений в документе JSONB теперь можно обойтись без извлечения и переопределения всего документа, благодаря появлению функции jsonb_set(). Также добавлены функции json_strip_nulls (удаление атрибутов, содержащих значения NULL) и jsonb_pretty (вывод в отформатированном JSON). Добавлен оператор "||" для соединения двух значений JSONB;
  • Инструмент pg_rewind, позволяющий существенно упростить процесс восстановления отказоустойчивых конфигураций после переключения на резервный сервер. После возвращения в строй основного сервера возникает задача синхронизации его состояния с продолжившим работу запасным сервером, который успел накопить свою порцию изменений. Утилита pg_rewind пытается восстановить состояние первичного сервера по WAL-логу транзакций, перебирая их начиная с момента незадолго до сбоя, определяя изменённые данные и перенося только изменившиеся блоки, что позволяет обойтись без восстановления полной копии с работающего резервного сервера.
  • Существенные оптимизации скорости сортировки и хэширования в памяти. Благодаря применению нового метода сортировки строковых значений и чисел, удалось увеличить скорость индексации в три раза;
  • Автоматизированное управление размером лога транзакций. Возможность исключения отражения таблиц в логе транзакций (ALTER TABLE ... SET LOGGED / UNLOGGED);
  • Аналитические возможности "GROUPING SETS", "CUBE" и "ROLLUP", позволяющие формировать вывод с группировкой по набору полей и рассчитывать число комбинаций различных категорий;
  • Улучшения репликации и средств повышения отказоустойчивости;
  • Множественные улучшения в механизме Foreign Data Wrappers, включая выражение "IMPORT FOREIGN SCHEMA", которое позволяет автоматизировать импорт всех связанных внешних таблиц для уже существующих таблиц с выбранной меткой сервера. Кроме того, обеспечена возможность наследования внешних таблиц в локальных таблицах и наоборот, например, "CREATE local_customers () inherits (remote.customers);"
  • В утилиту vacuumdb добавлена опций "-j", позволяющая запускать VACUUM в несколько одновременно выполняемых потоков;
  • Существенные улучшения масштабирования на системах с большим количеством процессорных ядер и оперативной памяти.


  1. Главная ссылка к новости (http://www.postgresql.org/abou...)
  2. OpenNews: Для PostgreSQL представлена реализация условных индексов
  3. OpenNews: В СУБД PostgreSQL включена реализация UPSERT
  4. OpenNews: Представлена инфраструктура по организации параллельных вычислений в PostgreSQL
  5. OpenNews: Для PostgreSQL подготовлен инструмент ресинхронизации pg_rewind
  6. OpenNews: Релиз СУБД PostgreSQL 9.4
Автор новости: postgremen
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/42555-postgresql
Ключевые слова: postgresql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, fi (ok), 12:50, 03/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Ну вот, а где VODKA? замяли?
     
     
  • 2.2, Andrey Mitrofanov (?), 13:00, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ну вот, а где VODKA? замяли?

    http://www.postgresql.org/message-id/CAF4Au4xZDFhhxcBJkKhw2mv768Cpdr1U3WdC3hx

    cсылка #1 в seatch://postgresql vodka

     
  • 2.4, Аноним (-), 15:24, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    http://www.pgcon.org/2014/schedule/attachments/318_pgcon-2014-vodka.pdf
     

  • 1.3, ъ (?), 15:22, 03/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Очень люблю эту БД. Но "Существенные улучшения"+"UPSERT" как-то не тянут на смену версии... (и чет приуныл).
     
     
  • 2.5, Аноним (-), 16:07, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Row-Level Security, RLS не тянет?!?!?! Да "ви слишком много кушать" ! (С)
     
     
  • 3.23, Аноним (-), 17:07, 06/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А позвольте поинтересоваться, где оно применимо?

    Я вот сходу не придумал, поэтому не понимаю восторгов по поводу.

     
  • 2.11, Roman (??), 19:02, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Да ну заелись вы) один только jsonb_set() чего стоит, + UPSERT, + GROUPING SETS, многопоточный вакуум, как по мне так весьма
     
  • 2.13, vitalif (ok), 23:22, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    UPSERT не тянет? да UPSERT сразу на 10.0 тянет, их года с 2007 минимум его просят сделать
     

  • 1.6, Fantomas (??), 16:22, 03/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как дела с BDR?
     
     
  • 2.7, Andrey Mitrofanov (?), 17:00, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > как дела с BDR?

    В release notes-ах видишь эти буквы? Нет. Значит, по-прежнему http:/openforum/vsluhforumID3/102644.html#27 + http:/openforum/vsluhforumID3/102644.html#21

     
     
  • 3.9, чуфырчуфырович (?), 17:52, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю, пока функциональность не допилят(поддержка truncate+ некоторых ALTER)
    рано вопрос ставить.
    И с split-brain - тоже вопрос серьёзный.
    Дядя Вася с бульдозером победит любую оптику, а 2 сервера будут считать себя главными.
    Судя по всему, как разруливать такое пока что не придумали.
     
     
  • 4.10, Andrey Mitrofanov (?), 18:13, 03/07/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Думаю, пока функциональность не допилят(поддержка truncate+ некоторых ALTER)
    > рано вопрос ставить.
    > И с split-brain - тоже вопрос серьёзный.

    Это же BDR! Мастер-мастер! И так 48 раз!! Как Вы не понимаете?!? Просто перепишите Ваши приложения!!!11

    ""Other systems are loosely-coupled. They don't attempt to appear like a single seamless virtual database [...] There is generally no global lock manager or transaction manager, so transactions on one node aren't affected by locks taken on other nodes. [...] This can make application development more difficult, [...]

    BDR is a loosely coupled shared-nothing multi-master design.

    У них нет сплитов, у них "Multi-master conflicts". Про них они ещё не написали убедительной агитки.

    > Дядя Вася с бульдозером
    >разруливать такое пока что не придумали.

    Как не придумали? Конечно, придумали. Я в них верю.

     
  • 4.24, КО (?), 18:22, 06/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Судя по всему, как разруливать такое пока что не придумали.

    Как известно для разрешения brain split нужна либо единая точка отказов, либо нечетное количество резервируемых элементов. :)

     

  • 1.8, чуфырчуфырович (?), 17:48, 03/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    BDR пока что сыроват, не хватает поддержки операций.
    А такие вещи как VODKA быстро не делаются.
    Тут не баран чихнул. Это ж не MySQL, не отлаженные фичи в релиз внедрять.
    Чото мне кажется, что 9.6 версии не будет, а будет сразу 10.
     
  • 1.12, Вася (??), 20:34, 03/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    я и 9.5 удивлён.
    7.4, 8.4 - и следующий релиз. Значит водку Братунов хочет в 9-й ветке сделать :)
     
  • 1.14, Аноним (-), 16:46, 04/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Подскажите, кто пользуется, как настроить postgre, чтобы она записывала данные на жд не чаще чем раз в час?
     
     
  • 2.16, Andrey Mitrofanov (?), 20:17, 04/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Подскажите, кто пользуется, как настроить postgre, чтобы она записывала данные на жд
    > не чаще чем раз в час?

    Положить WAL-логи на флэш и поставить интервал checkpoint в 61 минуту. А да, и не писать в базу больше, чем вызовет checkpoint раньше...   Элементарно, Ватсон.

     
  • 2.18, ъ (?), 21:41, 04/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    http://www.inp.nsk.su/~baldin/PostgreSQL/postgresql-tuning.pdf
    в разделе "Журнал транзакций (Write Ahead Log)", лучше вы будете понимать что делаете, а не просто скидывать кеш раз в 61 минуту.
     

  • 1.15, s79 (?), 17:50, 04/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > -  Функциональность "UPSERT" (добавить-или-модифицировать), реализованная через новое
    > выражение "INSERT ON CONFLICT NOTHING/UPDATE"

    ну вот почему через жопу, а не через уже устоявшийся синтаксис MERGE?

    и где пакеты?

     
     
  • 2.17, Аноним (-), 20:30, 04/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А в чём разница?
     
     
  • 3.19, s79 (?), 04:11, 05/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    В том что merge есть в стандарте, а INSERT ON CONFLICT нет в стандарте
     
     
  • 4.22, Чуфыр чуфырович (?), 20:07, 05/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > В том что merge есть в стандарте, а INSERT ON CONFLICT нет
    > в стандарте

    Разрабы неоднократно говорили, что есть у них есть границы поддержки стандарта.
    Что там есть
    1)откровенно глупые вещи.
    2)вещи, которые невозможно корректно реаизовать
    И что они этого делать не будут не под каким видом.
    ЗЫ
    Забавно, что 2011 стандарт в части индексов, говорят, списан с postgresql.
    Не с большой тройки. Это уже о многом говорит.

     
  • 2.20, Аноним (-), 10:59, 05/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что полноценный merge практически невозможно реализовать корректно для всех уровней изоляции транзакций.

    В этом месте проблемы и в Оракле, и в MSSQL.

     
  • 2.21, Чуфыр чуфырович (?), 19:54, 05/07/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >где пакеты?

    чем вам extension не угодили?
    Концепция ИМХО, круче оракловой.
    А если вам валидация нужна - идите туда
    http://postgresql.uservoice.com/forums/21853-general/suggestions/8705821-vali
    и голосуйте за эту фичу.
    По мне - если они водку сделают и бдр с разруливанием - оракля пойдёт курить бамбук.

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру