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;
Пример вывода результата:Раскрыть type=sqljson ------------------------------------------------- {"bar": "baz", "balance": 7.77, "active":false} (1 row)
-
тип
jsonb
не сохраняет семантически незначащие детали, такие как пробелы:SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::jsonb;
Пример вывода результата:Раскрыть type=sqljsonb -------------------------------------------------- {"bar": "baz", "active": false, "balance": 7.77} (1 row)
-
с типом
jsonb
числа выводятся по правилам нижележащего типаnumeric
:SELECT '{"reading": 4.230e-6}'::json, '{"reading": 4.230e-6}'::jsonb;
Пример вывода результата:Раскрыть type=sqljson | jsonb -----------------------+-------------------------- {"reading": 4.230e-6} | {"reading": 0.000004230} (1 row)
Дополнительную информацию по поставляемому модулю jsonb_plperl можно получить по ссылке.
Описание специальных функций и операторов для работы с типами
JSON
(JSONB
): https://www.postgresql.org/docs/13/functions-json.html.