jsonb_plperlu. Трансформация для типа jsonb в структуру PL/Perlu#
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты:
plperlu.Схема размещения:
ext.
Модуль реализует трансформации (преобразование) для типа jsonb в структуру недоверенного (untrusted) PL/Perl.
Примечание:
Типы
jsonпредназначены для хранения данных в форматеJSON(JavaScript Object Notation, Запись объекта JavaScript) согласно стандарту RFC 7159.Типы
jsonbпредназначены для хранения данных в форматеJSONB, который представляет собой бинарное представление данных в форматеJSON.В общем случае такие данные можно хранить в текстовом формате, но применение типов
JSON/JSONBдает возможность проверять вводимое значение на соответствие форматуJSON/JSONB.Описание специальных функций и операторов для работы с типами
JSON/JSONB: https://www.postgresql.org/docs/15/functions-json.html
Модуль jsonb_plperlu является одним из дополнительных расширений для различных процедурных языков.
Расширения для PL/Perl:
jsonb_plperl– для доверенного (trusted) языка PL/Perl.jsonb_plperlu– для недоверенного (untrusted) языка PL/Perl.
При использовании расширений значения jsonb отображаются в соответствующие структуры Perl:
массивы;
хеши;
скаляры.
Сравнение типов с точки зрения эффективности:
Параметр |
|
|
|---|---|---|
Cохраняет точную копию введенного текста |
Да |
В разобранном двоичном формате |
Скорость ввода |
Высокая |
Низкая из-за разбора |
Скорость обработки |
Низкая из-за необходимости разбирать заново при каждом выполнении запроса |
Высокая |
Поддержка индексации |
Нет |
Да |
Полное описание типов
JSONв данной документации не приводится.Подробное описание типов
json/jsonb/jsonpath(синтаксис, проверки, вхождения, трансформации) представлено в официальной документации: https://www.postgresql.org/docs/15/datatype-json.html#id-1.5.7.22.20
Доработка#
Доработка не проводилась.
Ограничения#
Ограничения отсутствуют.
Установка#
Необходимо предварительно установить связанное расширение plperlu или использовать предложение CASCADE.
Модуль считается «доверенным», поэтому его могут устанавливать пользователи, имеющие право CREATE в текущей базе данных:
CREATE EXTENSION jsonb_plperlu CASCADE SCHEMA ext;
Настройка#
Настройка не требуется.
Использование модуля#
Подробное описание типов json/jsonb/jsonpath (синтаксис, проверки, вхождения, трансформации) представлено в официальной документации: https://www.postgresql.org/docs/15/datatype-json.html#id-1.5.7.22.20
Ниже приведены несколько примеров для понимания различий в работе типов:
значение
JSONвводится и затем выводится без дополнительной обработки, выводит тот же текст, что поступил на вход:SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::json;Пример вывода результата:
json ------------------------------------------------- {"bar": "baz", "balance": 7.77, "active":false} (1 row)jsonbне сохраняет семантически незначащие детали, например, пробелы:SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::jsonb;Пример вывода результата:
jsonb -------------------------------------------------- {"bar": "baz", "active": false, "balance": 7.77} (1 row)с
jsonbчисла выводятся по правилам нижележащего типаnumeric:SELECT '{"reading": 4.230e-6}'::json, '{"reading": 4.230e-6}'::jsonb;Пример вывода результата:
json | jsonb -----------------------+-------------------------- {"reading": 4.230e-6} | {"reading": 0.000004230} (1 row)
Ссылки на документацию разработчика#
Дополнительно поставляемый модуль jsonb_plperlu: https://www.postgresql.org/docs/15/datatype-json.html#id-1.5.7.22.20;
Описание специальных функций и операторов для работы с типами JSON/JSONB: https://www.postgresql.org/docs/15/functions-json.html.