jsonb_plperl
Трансформация для типа jsonb в структуру PL/Perl.
Связанные компоненты: plperl.
Схема размещения:
ext.Модуль реализует трансформации (преобразования) для типа
jsonb в структуру PL/Perl.Типы
json предназначены для хранения данных в формате JSON (JavaScript Object Notation, запись объекта JavaScript) согласно стандарту RFC 7159.Типы
jsonb предназначены для хранения данных в формате JSONB, который представляет собой бинарное представление данных в формате JSON.В общем случае такие данные можно хранить в текстовом формате, но применение типов
JSON (JSONB) дает возможность проверять вводимое значение на соответствие формату JSON (JSONB).Модуль
jsonb_plperl является одним из дополнительных расширений для различных процедурных языков.Расширения для PL/Perl:
- jsonb_plperl;
- jsonb_plperlu – для недоверенного (untrusted) языка PL/Perl.
При использовании расширений значения
jsonb отображаются в соответствующие структуры Perl:- массивы;
- хеши;
- скаляры.
Сравнение типов с точки зрения эффективности:
| Параметр | json | jsonb |
|---|---|---|
Cохраняет точную копию введенного текста | Да | В разобранном двоичном формате |
Скорость ввода | Высокая | Низкая из-за разбора |
Скорость обработки | Низкая из-за необходимости разбирать заново при каждом выполнении запроса | Высокая |
Поддержка индексации | Нет | Да |
Ниже приведены несколько примеров для понимания различий в работе типов:
-
значение
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_plperl можно получить по ссылке.
Описание специальных функций и операторов для работы с типами
JSON (JSONB): https://www.postgresql.org/docs/13/functions-json.html.