PostgreSQL

Тип данных и функции PostgreSQL JSONB

Тип данных и функции PostgreSQL JSONB

Как и в 9.Версия 2, PostgreSQL добавил довольно простой тип данных JSON. Под крышкой тип данных JSON - это текст, с проверкой правильности макета. Ввод JSON похож на XML. В конце концов, команда обнаружила, что объем обработки JSON и специализированного поиска, необходимый в PostgreSQL, было бы трудно или рационально обеспечить для текстового типа данных. Следовательно, они создали двоичное представление типа данных JSON с полным набором операторов и методов. А вот и тип данных JSONB. Тип данных JSONB действительно представляет собой универсальный макет двоичного хранения с полной обработкой, индексированием и возможностями поиска. В результате он предварительно обрабатывает информацию JSON во внутреннем макете, который имеет только одно значение для каждого ключа и игнорирует дополнительные пробелы или нажатия, или вы можете сказать отступ. В этом руководстве вы узнаете, как взаимодействовать с формой данных JSONB в PostgreSQL, а также познакомитесь с некоторыми удобными операторами и методами для работы с данными JSONB.

Тип данных, который вам, скорее всего, потребуется и который вы выберете для использования, - это JSONB, а не ранняя версия JSON, которая используется только для обратной совместимости. Итак, откройте командную оболочку PostgreSQL и укажите имена сервера, базу данных, порт и имя пользователя.

Пример 01:

Вот краткая иллюстрация различий между двумя типами данных. Мы должны создать таблицу New, в которой один из столбцов должен иметь тип данных JSON, как показано ниже:

>> СОЗДАТЬ ТАБЛИЦУ New (ID serial PRIMARY KEY, Val JSON);

Вставьте некоторые значения в столбец "Val".

>> ВСТАВИТЬ В новые (Val) ЗНАЧЕНИЯ ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('«ключ»: «значение»') ;

Использование оператора '@>'

Как только мы пытаемся найти записи с целым числом в списке дополнительных столбцов, мы всегда получаем сообщение об ошибке, как показано ниже.

>> ВЫБРАТЬ * ИЗ НОВОГО WHERE Val @> '11';

да. JSON - это просто текст, он не очень эффективен и не содержит конфигурации оператора. Пусть содержимое поменяется на jsonb.

>> ALTER TABLE Новый ALTER COLUMN Val TYPE JSONB;

Теперь выполните тот же запрос в оболочке, и результат покажет одну строку с номером 11 в своем массиве, как показано ниже.

>> ВЫБРАТЬ * ИЗ НОВОГО WHERE Val @> '11';

Пример 02:

Давайте создадим таблицу «Сумка», которая будет использоваться в наших иллюстрациях, пока мы не начнем говорить о методах и операторах, используемых для типа данных PostgreSQL JSONB. Один из его столбцов, e.грамм. «Бренд» должен быть типа данных «JSONB» следующим образом:

>> СОЗДАТЬ ТАБЛИЦУ (ID serial PRIMARY KEY, Brand JSONB NOT NULL);

Мы будем использовать следующее объявление SQL INSERT для добавления информации в таблицу PostgreSQL 'Bag':

>> ВСТАВИТЬ ЗНАЧЕНИЯ сумки (бренда) ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "sold": true,]') , ('"name": "Allure", "color": ["red", "Gray"], "price": 85000, "sold": false,]'), ('"name": «Кидза», «цвет»: [«черный», «белый»], «цена»: 75000, «продано»: верно,] ');

Вы можете видеть, что данные были добавлены в виде словаря, e.грамм., ключи и ценности.

Элементы этой таблицы «Сумка» можно увидеть с помощью предложения SELECT, как показано ниже:

>> ВЫБРАТЬ * ИЗ Мешка;

Использование оператора '->'

Давайте поищем значения в столбце «Бренд» по ключу «имя» с помощью оператора «->» в нашем запросе.  Он получит все записи ключа 'name' из столбца 'Brand'. Результат будет показан в новом столбце «марка». Окончательный результат будет выглядеть так, как показано ниже. Как видите, у нас есть три значения: Gucci, Allure, kidza для ключа name.

>> ВЫБЕРИТЕ Бренд -> «название» КАК бренд ИЗ сумки;

Использование оператора '->' с использованием предложения WHERE

Давайте возьмем все эти строки из таблицы «Сумка», где столбец «Бренд» имеет значение «истина» для своего ключа «продано». Запрос для этого выбора выглядит следующим образом:

>> ВЫБРАТЬ * ИЗ Мешка ГДЕ Бренд -> 'sold' = 'true';

Как видите, запрос получил только две строки из таблицы Bag, потому что в нем есть только две строки со значением true для ключа sold.

Функции PostgreSQL JSONB:

С информацией JSONB, похоже, есть множество встроенных методов, которые можно использовать. Давайте посмотрим на них один за другим.

JSONB Каждая функция:

Функция JSONB Each принимает данные и преобразует их в пару key_value. Рассмотрим следующий запрос метода jsonb_each, в котором мы предоставили значения. Данные JSON самого высокого уровня в результате раскрываются в серию комбинаций "ключ-значение". У нас есть две пары "ключ-значение", как показано ниже.

>> SELECT jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);

Функция ключей объекта JSONB:

Теперь мы взглянем на функцию Jsonb_object_keys. Эта функция принимает данные, а сама разделяет и идентифицирует в них ключевые значения. Попробуйте выполнить приведенный ниже запрос SELECT, в котором мы использовали метод jsonb_object_keys и предоставили некоторые значения. Этот метод вернет только ключи документа JSON самого высокого уровня для определенных данных, как показано ниже.

>> ВЫБЕРИТЕ jsonb_object_keys ('"name": "kidza", "sold": "true"' :: jsonb);

Функция извлечения пути JSONB:

Функция JSONB Extract Path принимает путь, чтобы показать значение в результате. Попробуйте выполнить приведенный ниже запрос в командной оболочке, где мы указали «бренд» в качестве пути к методу JSONB jsonb_extract_path. Из вывода, представленного на изображении ниже, вы можете видеть, что «Gucci» - это возвращаемое значение пути «name».

>> SELECT jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');

Функция JSONB Pretty:

Если вы хотите отображать свои файлы JSON в удобном для чтения макете, то функция JSONB Pretty - лучший вариант. Попробуйте запрос ниже, и вы получите простой результат.

>> SELECT jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);

Заключение:

Когда вы храните информацию JSONB в базах данных PostgreSQL, вы получаете наилучший возможный результат: простоту и надежность базы данных NoSQL в сочетании с преимуществами реляционной базы данных. Используя многочисленные операторы и методы, мы продемонстрировали, как использовать PostgreSQL JSONB. Вы сможете работать с данными JSONB, используя наши иллюстрации в качестве справочника.

Как разработать игру в Linux
Десять лет назад не многие пользователи Linux могли бы предсказать, что их любимая операционная система однажды станет популярной игровой платформой д...
Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...
Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...