Ако работите с SQL бази данни, вие със сигурност ще се съгласите, че структурата на дизайна изглежда по-лесно, отколкото е всъщност. SQL база данни вярват в структурата, и поради тази причина се наричат Structured Query Language.
От друга страна днес не е по-малко популярни бази данни NoSQL, които също са посочени като схема-малко - те не са строго обвързани с определена структура и нямат структурни ограничения.
Разбира се, всеки инструмент има свой собствен характер, понякога изисква комбинация от решения. Какво става, ако твърдо да структурира, някои части на заявлението, а някои правят гъвкав? MySQL версия 5.7.8 въведе нов тип данни - JSON, което ни позволява да се реши този проблем.
Защо да използвате JSON
В този момент вие вероятно се питате защо е необходимо да използвате JSON, така че когато MySQL се справя с неговите функции.
Нека разгледаме един пример. Да речем, че се създаде уеб приложение, където трябва да спаси потребителски настройки в базата данни. Като правило, можете да създадете отделна страница с полета за самоличност. USER_ID и ценности, или да ги запишете на определен низ формат, и го анализира по време на изпълнение. Това работи добре, ако имате няколко потребители. Ако имате хиляди потребители и пет ключове конфигурация, тя е вече пет хиляди записи, които все пак са само една малка част от вашата кандидатура. Анализ форматиран низ само създава допълнителна тежест в издръжливостта й. Използването на JSON в този случай може да спаси своите ресурси, намаляване на броя на записите в базата данни и броя на допълнителните искания.
Преди да се потопите в функционалността на проучване JSON, ние се нуждаем един пример за база за работа. Така че първо скицира структурата. Ще разгледаме случая на използване на онлайн магазин, където има няколко марки и разнообразие от електроника. Тъй като различни приспособления имат различни атрибути (сравни с Macbook вакуум) обикновено се използва модел Entity-Умение-стойност (EAV) модел. Но ние се откаже от нея, тъй като ние използваме JSON.
Нашата база данни ще се нарича в магазина и има три маси - марки. категории и продукти. Маси марки и категории са много сходни и имат само идентификатора и името.
Сега създайте продукти маса с полета номер, име. brand_id. category_id и attributes`.
Нашата рамка определя два външни ключове за полета и brand_id category_id. отнасящи се до търговските марки на масата и категории, съответно.
поле атрибути се определя като JSON, което ще ни позволи да се използват налични в MySQL JSON-функционален за това поле.
Това е структурата на базата данни имаме в края на краищата.
Създаване на запис на таблица с поле JSON е съвсем проста. Всичко, което е необходимо - е да добавите валиден JSON в тази област в искането за вмъкване.
Също така, вместо на JSON обект за кодиране, можете да използвате вградената функция JSON_OBJECT. Тази функция може да отнеме списък на двойки ключ-стойност на форма JSON_OBJECT на (key1, value1, key2, стойност 2, ... ключ (н), стойност (п)) и връща JSON обект.
Струва си да се обръща внимание на JSON_ARRAY на функция. която връща масив от JSON обекти.
Ако посочите с един бутон няколко пъти - ще се използва само първата двойка ключ-стойност. Също така, ключовете се сортират и почистват от вдлъбнатина.
Друга функция е да се работи с JSON - JSON_MERGE. Функцията отнема няколко JSON обекти и връща един единствен комбиниран.
В JSON_MERGE минаваме само обекти. Някои от тях са създадени с помощта на JSON_OBJECT. вие демонтирани по-рано. Ако JSON_MERGE ключ се повтаря няколко пъти, а след това стойността му ще бъдат обединени в масив.
Ние можем да проверите резултата с функцията употреба JSON_TYPE. която връща типа на съхраняваните стойност.
Така че, ние имаме няколко продукти в нашата база данни.
За обикновения MySQL заявка КЪДЕ клауза е съвсем проста - трябва да посочите поле, оператор и стойност. За JSON полета, които няма да работят.
За да изберете желаните линии на полето JSON трябва да са запознати с концепцията на пътя. Най-простите примери за начина, по който - CSS селектори. Във втората част на пъзела - функция JSON_EXTRACT на. който взема като аргументи път за движение, като JSON обект.
Например, ние се интересуваме от телевизор с HDMI порт или щатски долари.
За да актуализирате стойностите, които искате да използвате JSON JSON_INSERT. функция JSON_REPLACE и JSON_SET. Тези функции също се нуждаят от начин да се посочи кои части от обекта JSON искате да промените. Произхода на тези функции - валиден JSON обект, за да приложите промените.
Way $ .chipset чипсет определя местоположението на свойствата на корен обект.
Да се актуализира свойствата на чипсет, използващи JSON_REPLACE.
Накрая ние останахме функция JSON_SET и ние го използваме, за да се актуализират телевизори.
Тези характеристики изглеждат еднакви, но има разлика в поведението си. JSON_INSERT добавите свойства на даден обект, само ако все още не съществува. JSON_REPLACE замества имота, само ако съществува. JSON_SET имот добавя или да го замества, ако тя вече съществува.
Тук ще разгледаме два случая на изтриване на данни.
Произход - отстраняване на конкретен полета ключ-стойност на вашия JSON, второ - изтриване на редове изцяло от състоянието на JSON области.
Например, ние вече не предоставят информация mount_type за камери и искате да го премахнете за всички камери. Ние ще направим това с помощта JSON_REMOVE. която връща Актуализираният без JSON на ключовата начин.
Свързани статии