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