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-базирани.
Свързани статии