В связи с выходом новой версии PostgreSQL 9.5 мы рассмотрим наиболее ожидаемые обновления, которые она принесет, начиная с новой функции Upsert.
PostgreSQL — это система баз данных с открытым исходным кодом, изначально созданная в Калифорнийском университете в Беркли. Прошло больше года с момента последнего обновления десятичной точки, см. Выпуск PostgreSQL 9.4, и в нем есть некоторые заметные улучшения.
Upsert — это сокращенная форма ‘INSERT … ON CONFLICT DO NOTHING / UPDATE’, которая активируется, когда в оператор SQL добавлено предложение ON CONFLICT DO UPDATE SET. Это полезно при попытке вставить запись и эта вставка нарушает ограничение, вместо того, чтобы приводить к сообщению об ошибке, а также к потенциальному откату, теперь у вас есть возможность либо ничего не делать / игнорировать ее и двигаться дальше, либо обновлять одну или больше столбцов рассматриваемой строки
Например, учитывая строку:
и пытаемся вставить строку:
ибан
название
Телефон
GB29RBOS60161331926819
Крис
67890
указав: ON CONFLICT (id) DO UPDATE SET phone = excluded.phone
вместо того, чтобы просто жаловаться, система обновит столбец телефона новыми данными.
Вращение упрощается за счет указания типа группировки типичного предложения GROUP BY с введением наборов группировки, куба и ключевых слов объединения.
Например, для данного предложения GROUP BY в нескольких столбцах, скажем, GROUP BY (A, B, C), использование ключевого слова «Наборы группировки» даст количество вхождений каждого ключа в наборе данных. Таким образом, в этом случае он будет давать количество A, количество B, количество C
Ключевое слово Cube даст количество вхождений каждой комбинации, то есть количество (A, B), количество (A, C) и количество (A, B, C), в то время как Rollup сгруппирует столбцы в указанной последовательности. производя счет (A, B), счет (A, B, C), но не (A, C).
Как и в предыдущем выпуске, улучшена поддержка JSON. PostgreSQL поддерживает два формата типа json, json и jsonb, причем последний рекомендуется как более эффективный: jsonb его можно индексировать, а простой json — нет. Основные различия между двумя форматами заключаются в том, что jsonb игнорирует все пробелы и не отслеживает порядок ключей при их сохранении, опять же из соображений эффективности.
До недавнего времени вы могли просто хранить и извлекать, но не изменять данные jsonb. Это было исправлено введением операторов модификации, которые позволяют выполнять такие функции, как удаление ключей или элементов массива из объекта jsonb, перезапись существующих значений или их обновление.
Также будет удобна опция jsonb_pretty, поскольку она может форматировать длинную строку jsonb для облегчения чтения в командной строке psql.
{«name»: «James», «contact»: {«phone»: «01234 567890», «fax»: «07900 112233»}} ‘:: jsonb
будет отформатирован в:
———————————
{+
«name»: «Джеймс», +
«контакт»: {+
«факс»: «01987 543210», +
«телефон»: «07900 112233» +
} +
}
PostgreSQL имеет концепцию внешней базы данных, которая используется для операций ETL, когда вам нужно импортировать либо всю схему из внешней базы данных в производственную, либо даже просто импортировать отдельные таблицы. Новый синтаксис импорта внешней схемы может подавить это:
СОЗДАТЬ ИНОСТРАННУЮ ТАБЛИЦУ remote.customers (
id int NOT NULL,
текст имени,
текст компании,
зарегистрированная_дата дата,
expiry_date дата,
активное логическое значение,
текст статуса,
account_level текст) SERVER dest_server OPTIONS (schema_name ‘public’);
в это:
ИМПОРТ ЗАРУБЕЖНОЙ СХЕМЫ общедоступной
ОТ СЕРВЕРА dest_server В удаленный;
Если вы хотите синхронизировать свои базы данных для целей репликации, pg_rewind оказывается очень эффективным, поскольку теперь вам не нужно копировать полную резервную копию в реплицированную базу данных, а вместо этого копировать только страницы, которые были изменены, просматривая журнал предварительной записи. Экономит много времени и рассудка.
SKIP LOCKED полезен, когда нужно получить некоторые строки для обновления, но часть из них заблокирована другой транзакцией, поэтому этот параметр позволяет пропустить эти строки и выполнить обновление для остальных.
Другие новые функции включают отслеживание отметок времени фиксации, оптимизацию сортировки (сокращенные ключи) и многое другое.
Несомненно, эти новые функции понравятся существующим пользователям. Им также следует поощрять пользователей других продуктов переходить на PostgreSQL.