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

PostgreSQL JSON База данных

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

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

Тип данных, который вам, скорее всего, потребуется и вы выберете для использования

Пример 1

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

>> CREATE TABLE New(ID serial PRIMARY KEY, Val JSON);

Вот краткая иллюстрация различий между двумя типами данных

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

>> INSERT INTO New(Val) VALUES ([1, 2, 3, 4]), ([10, 11, 12, 13]), ({key”: “value});

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

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

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

>> SELECT * FROM New WHERE Val @> ‘11;

Как только мы пытаемся найти записи с целым числом в списке «дополнительных» столбцов

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

>> ALTER TABLE New ALTER COLUMN Val TYPE JSONB;

JSON — это просто текст, он не очень эффективен

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

>> SELECT * FROM New WHERE Val @> ‘11;

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

Пример 2

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

>> CREATE TABLE Bag(ID serial PRIMARY KEY, Brand JSONB NOT NULL);

Давайте создадим таблицу «Сумка»

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

>> INSERT INTO Bag(Brand) VALUES (‘{«name»: «Gucci», «color»: [«red», «black»], «price»: 10000,  «sold»: true,]}’), (‘{«name»: «Allure», «color»: [«red», «Grey»], «price»: 85000,  «sold»: false,]}’), (‘{«name»: «Kidza», «color»: [«black», «white»], «price»: 75000,  «sold»: true,]}’);

Вы можете видеть, что данные были добавлены в виде словаря, например, ключей и значений.

Вы можете видеть, что данные были добавлены в виде словаря, например, ключей и значений

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

>> SELECT * FROM Bag;

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

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

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

>> SELECT Brand -> ‘name’ AS brand FROM Bag;

Давайте поищем значения в столбце «Бренд» по ключу «имя»

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

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

>> SELECT * FROM Bag WHERE  Brand -> ‘sold’ = ‘true;

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

Читайте также:  Типы и функции PostgreSQL UUID

Как видите, запрос получил только две строки из таблицы «Bag»

Функции PostgreSQL JSONB

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

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

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

>> SELECT jsonb_each(‘{«name»: «Allure», «sold»: «true»}’::jsonb );

Функция JSONB Each принимает данные и преобразует

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

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

>> SELECT jsonb_object_keys(‘{«name»: «kidza», «sold»: «true»}’::jsonb );

Теперь мы взглянем на функцию Jsonb_object_keys

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

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

>> SELECT jsonb_extract_path(‘{«name»: «Gucci», «sold»: true}’::jsonb, ‘name’);

Функция JSONB Extract Path принимает путь

Функция JSONB Pretty

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

>> SELECT jsonb_pretty(‘{«name»: «Allure», «sold»: false}’::jsonb);

Если вы хотите отображать свои файлы JSON

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий