ПредишенСледващото

PostgreSQL поддържа JSON до версия 9.1 и някой от баня база ще приеме документ JSON като един ред. Въпреки това, MySQL и PostgreSQL вече е напълно подкрепена проверява данните в JSON формат, веднага след като двойки ключ / стойност, отколкото в един ред.

Само защото можете да съхранявате JSON.

... това не означава, че си струва

Нормализиране е техника, която се използва за оптимизиране на базата данни. Правило първо нормална форма (Първа нормална форма (1NF)) гласи, че всяка колона трябва да съдържа една стойност, тя се разбива в JSON съхраняване multivalued ценности.

Ако имате ясна релационни изисквания за данните, използвайте единичните стойности, съответно. JSON трябва да се използва с повишено внимание в краен случай. JSON полеви стойности не могат да бъдат индексирани, затова избягвайте да използвате колони, които се актуализират през цялото време или по които се търси редовно. В допълнение, по-малко приложения поддържат клиент JSON, а технологията се обновява и става по-малко стабилни в сравнение с други видове.

Тя се казва, че е добър вариант, JSON кандидатура ще бъде малък по отношение на данни или персонализирани атрибути.

Създайте таблица с JSON данни

1 - маса маркер. който съхранява всяко име маркер пред уникален идентификатор, както и
2 - таблица tagmap, в която има много-към-много книжки ID на ID тагове.

Всичко това ще работи, а по-скоро тромав като се има предвид простотата на задачата. Ето защо, ние определяме JSON областта тагове в нашата книга таблица в MySQL:

Създаване на таблица `book` (
`Id` mediumint (8) неподписан НЕ NULL auto_increment,
`Звание VARCHAR (200) НЕ NULL,
`Tags` JSON DEFAULT NULL,
Първичен ключ ( `id`)
) ДВИГАТЕЛ

Имайте предвид, че колоните JSON не може да бъде стойности по подразбиране, първични клавиши, те не могат да бъдат достъпни от външни ключове, и те не разполагат с индекс. Можете да създавате вторични индекси в генерираните виртуални високоговорители, но може би това ще бъде по-лесно да се запази стойността на индекса в отделна област.

Добавяне на данни в JSON

JSON целия документ може да се предава чрез поставяне на операторите или актуализация. Например, тази книга маркер може да се предава чрез масив:

JSON също може да бъде създаден с помощта на:

JSON_ARRAY () функция. което създава масиви, например
-- връща [1, 2, "ABC"]:
SELECT JSON_ARRAY (1, 2, "ABC");

JSON_OBJECT () функция, която създава обекти
-- възвръщаемост:
SELECT JSON_OBJECT ( "а", 1 "б", 2);

JSON_MERGE () функция, за да комбинира документи, като например
-- връща [ "а", 1]:
SELECT JSON_MERGE ( "[" а ", 1]", " ');

можете да персонализирате всяка стойност като JSON
(CAST anyValue AS JSON)

JSON_TYPE () функция ви позволява да проверите видовете ценности JSON. Тя връща обект, масив или грешка, например:
-- се връща на масива:
SELECT JSON_TYPE ( "[1, 2," ABC "]);
-- възвръщаемост на обекта:
SELECT JSON_TYPE ( '');
-- извежда грешка:
SELECT JSON_TYPE ( "

По същия начин, JSON_VALID () връща 1, ако правилното JSON:
-- се връща 1:
SELECT JSON_TYPE ( "[1, 2," ABC "]);
-- се връща 1:
SELECT JSON_TYPE ( '');
-- върне 0:
SELECT JSON_TYPE ( "опит да се мине с невалиден документ JSON ще доведе до грешка, а не е поставена на целия запис / актуализирани.

Търсене JSON данни

По същия начин, JSON_SEARCH () връща пътя към намерено появата, или NULL, ако се установи, няма съвпадение. Тя се предава JSON документ, който е за търсене, «едно» да открие първия мач, «всички», за да намерите всички мачове и низа за търсене, например:
-- всички книги с етикети, които започват с "Java":
SELECT * от 'book`
КЪДЕ JSON_SEARCH (тагове, "един", "Java%") НЕ Е NULL;

Път в JSON формат показва стойност и може да се използва за извличане или промяна на части от документ. функция JSON_EXTRACT () е ясно показано чрез екстрахиране на една или повече стойности.
-- връща "SitePoint":
SELECT JSON_EXTRACT (
''
'$ .website "
);

През целия път да се определи началото JSON на $ след друг избор.

  • точка, следвана от име като $ .website
  • [N], където N е позиция в масива където индексирането е нула
  • а. [*] заместващи символи, който определя броя на членовете в обекта
  • на [*] заместващи символи, които определят всички членове в масива
  • префикс ** наставка заместващи символи, който определя всички пътища, които започват със специфичен наставка и завършват определен префикс.

Като се има предвид документа JSON:

  • $ .a връща 1
  • Връща $ .c [3, 4]
  • $ .c [1] връща 4
  • $ .d.e връща 5
  • $ **. E връща [5]

Изолацията път JSON в искането

Ние може да извлече първия таг тиня резервират нашата маса с помощта на тази заявка:

SELECT
име,
тагове -> "$ [0]" AS `tag1`
От 'book`;

За по-сложен пример, представете си, че имаме една маса потребител с профил данни на JSON, например:

Ние може да извлича името на Twitter с помощта на JSON начин:

SELECT
име, профил -> "$ Twitter." AS `twitter`
От 'user`;

SELECT
име, профил -> "$ Twitter." AS `twitter`
От 'user`
КЪДЕ
профил -> ". $ Twitter" не е NULL;

Промени в JSON

Има няколко MySQL функции, които могат да правят промени в документа за JSON докато гребане маршрути. Те включват:

  • JSON_SET (док, път, Val [, път, Val].) -
    вложки или актуализира данните в документа
  • JSON_INSERT (док, път, Val [, път, Val].) -
    пъпеш пръчки в документа
  • JSON_REPLACE (док, път, Val [, път, Val].) -
    Той заменя на данните в документа
  • JSON_MERGE (док, док [, док].) -
    Той съчетава два документа
  • JSON_ARRAY_APPEND (док, път, Val [, път, Val].) -
    Тя добавя стойност към края на масива
  • JSON_ARRAY_INSERT (док, път, Val [, път, Val].) -
    Добавя масив от документи
  • JSON_REMOVE (док, пътека [, път].) -
    изтрива данни от документ

Наръчник за MySQL предоставя допълнителна информация за вида на JSON данни и свързана с JSON функции. Отново, аз ви призовавам да не се използва JSON, ако това не е абсолютно необходимо. Можете да симулирате целия документ ориентирани NoSQL база данни в MySQL, но това би лишило много от предимствата на SQL и можете да отидете на реалната система NoSQL. Както се казва, JSON типове данни могат да спестят силите си за по-неизвестни изискванията на приложение SQL-базирани.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!