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:
- массивы;
- хеши;
- скаляры.
Сравнение типов с точки зрения эффективности:
Параметр | json | jsonb |
---|---|---|
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.