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.