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:

Ось коротка ілюстрація варіацій між двома типами даних. Ми маємо створити таблицю "Нова", один із її стовпців повинен мати тип даних "JSON", як показано нижче:

>> СТВОРИТИ ТАБЛИЦЮ Нове (ID серійний ПЕРВИННИЙ КЛЮЧ, Val JSON);

Вставте деякі значення в стовпець 'Val'.

>> ВСТАВИТИ В НОВІ (VAL) ЦІННОСТІ ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"ключ": "значення"') ;

Використання оператора '@>'

Після того, як ми спробуємо шукати записи з цілим числом у списку стовпців «зайвий», ми завжди отримуємо повідомлення про помилку, як додано нижче.

>> ВИБЕРІТЬ * З НОВОГО ДЕ Val @> '11';

Так. JSON - це просто текст і не дуже ефективний, і він не містить конфігурації оператора. Нехай зміст змінено на jsonb.

>> ЗМІНИТЬ ТАБЛИЦЮ Новий ЗМІНИТЬ СТОЛБКУ Val TYPE JSONB;

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

>> ВИБЕРІТЬ * З НОВОГО ДЕ Val @> '11';

Приклад 02:

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

>> СТВОРИТИ СТОЛЬКУ сумку (ID серійний ПЕРВИННИЙ КЛЮЧ, марка JSONB НЕ НУЛЯ);

Ми будемо використовувати наступну декларацію SQL INSERT для додавання інформації до таблиці PostgreSQL 'Bag':

>> ВСТАВИТИ В ЗНАЧЕННЯ сумки (бренду) ('"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,] ');

Ви бачите, що дані були додані у вигляді словника, напр.g., ключі та значення.

Елементи цієї таблиці "Сумка" можна побачити, використовуючи речення SELECT, як показано нижче:

>> ВИБЕРІТЬ * З сумки;

Використання оператора '->'

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

>> ВИБРАТИ Бренд -> 'назва' ЯК бренд ВІД сумки;

Використання оператора '->' з використанням речення WHERE

Давайте дістанемо всі ті рядки з таблиці "Сумка", де стовпець "Бренд" отримав значення "true" для свого ключа "продано". Запит для цього вибору такий:

>> ВИБЕРІТЬ * ВІД сумки ДЕ Бренд -> 'продано' = 'правда';

Отже, запит отримав два рядки лише з таблиці "Сумка", оскільки він має лише два рядки, що мають значення "істина" для ключа "продано".

Функції PostgreSQL JSONB:

З інформацією JSONB, здається, існує безліч вбудованих методів, які можна використовувати. Давайте подивимось на них по черзі.

JSONB Кожна функція:

JSONB Кожна функція бере дані та перетворює їх у пару key_value. Розглянемо наступний запит методу jsonb_each, де ми вказали значення. Дані JSON найвищого рівня розширюються у ряд комбінацій ключ-значення в результаті. Ми отримали дві пари ключ-значення, як показано нижче.

>> ВИБЕРІТЬ 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 бере шлях, щоб показати значення в результаті. Спробуйте наведений нижче запит у командній оболонці, де ми вказали 'brand' як шлях до методу JSONB jsonb_extract_path. З результатів, представлених на зображенні нижче, ви можете бачити, що 'Gucci' - це повернене значення до шляху 'name'.

>> ВИБЕРІТЬ jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');

Досить функція JSONB:

Якщо ви хочете відобразити свої файли JSON із зручним для читання макетом, тоді найкращим варіантом є функція JSONB Pretty. Спробуйте подати запит нижче, і ви отримаєте простий результат.

>> ВИБЕРІТЬ jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);

Висновок:

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

Найкращі ігри для гри з відстеженням рук
Нещодавно Oculus Quest представив чудову ідею відстеження рук без контролерів. Завдяки постійно зростаючій кількості ігор та заходів, які виконують пі...
Як показати накладання екранного меню в повноекранному додатку та іграх для Linux
Гра у повноекранні ігри або використання додатків у повноекранному повноекранному режимі може відключити від відповідної системної інформації, видимої...
Топ 5 карт для захоплення ігор
Ми всі бачили і любили потокові ігри на YouTube. PewDiePie, Jakesepticye та Markiplier - лише деякі з найкращих геймерів, які заробили мільйони, заван...