Hogyan kell használni JSON adatbázisokban mysql - php akadémia blog

A PostgreSQL JSON verzió 9.1 és bármely fürdő bázis elfogadja JSON dokumentum egyetlen vonalon. Azonban, a MySQL és PostgreSQL most már teljes mértékben támogatott, ellenőrzött adatokat JSON formátumban amint kulcs / érték párokat, mint egy sorban.

Csak azért, mert képes tárolni JSON.

... ez nem azt jelenti, hogy érdemes

A normalizálás olyan technika, amely segítségével optimalizálható az adatbázisba. Szabály első normál forma (Első normálforma (1NF)) kimondja, hogy minden oszlopban csak egy értéket, akkor megtört JSON tárolására többértékű értékeket.

Ha van egy világos relációs adatok elengedhetetlen, hogy egyetlen érték, ill. JSON kell óvatosan kell alkalmazni a legvégső. JSON mező értékeket nem lehet indexelni, ezért nem érdemes oszlopokat frissülnek minden alkalommal, vagy amelyek keresett rendszeresen. Emellett kevesebb alkalmazás támogatja kliens JSON, és a technológia frissül, és egyre kevésbé stabil, mint más típusok.

Azt mondják, hogy egy jó lehetőség JSON alkalmazás kicsi lesz szempontjából adatok vagy egyéni attribútumokat.

Hozzon létre egy táblázatot JSON adatok

1 - táblázat tag. amely tárolja minden névtáblát előtt egy egyedi azonosító, és
2 - tagmap táblázat, amelyben van egy a sok-sok rekordok könyvébe ID azonosító címke.

Mindez működni fog, de meglehetősen nehézkes adott az egyszerű feladat. Ezért a mező meghatározásához címkék JSON könyvünkben egy táblázat MySQL:

CREATE TABLE `book` (
`Id` mediumint (8) unsigned NOT NULL AUTO_INCREMENT,
`Title` varchar (200) NOT NULL,
`Tags` JSON DEFAULT NULL,
PRIMARY KEY ( `id`)
) MOTOR

Megjegyezzük, hogy az oszlopok JSON nem lehet az alapértelmezett értékek, az elsődleges kulcs, akkor nem lehet hozzáférni a külföldi kulcsok, és nem a mutató. Hozhat létre a másodlagos indexek a generált virtuális hangszórók, de talán könnyebb lesz fenntartani a index értéke külön mezőben.

Hozzáadása az adatokat JSON

JSON teljes dokumentumot lehet továbbítani az üzemeltetők INSERT vagy UPDATE. Például ez a könyv tag lehet átengedjük egy tömböt:

JSON is készült:

JSON_ARRAY () függvény. amely megteremti tömbökre, például
-- visszatér [1, 2, "abc"]:
SELECT JSON_ARRAY (1, 2, 'ABC');

JSON_OBJECT () függvényt, amely létrehozza tárgyak
-- hozam:
SELECT JSON_OBJECT ( 'a', 1, 'b', 2);

JSON_MERGE () függvény, hogy összekapcsolják dokumentumok, mint például
-- visszatér [ "a", 1]:
SELECT JSON_MERGE ( '[ "a", 1]', '');

szabhatja bármilyen értéket JSON
(CAST anyValue JSON)

JSON_TYPE () funkció lehetővé teszi, hogy ellenőrizze a fajta JSON értékeket. Ez visszatér OBJECT, tömb vagy hiba, például:
-- vissza tömböt:
SELECT JSON_TYPE ( '[1, 2, "abc"]');
-- visszatér Objektum:
SELECT JSON_TYPE ( '');
-- hibát jelez:
SELECT JSON_TYPE (

Hasonlóképpen, JSON_VALID () függvény értéke 1, ha a megfelelő JSON:
-- vissza 1:
SELECT JSON_TYPE ( '[1, 2, "abc"]');
-- vissza 1:
SELECT JSON_TYPE ( '');
-- return 0:
SELECT JSON_TYPE (próbálják JSON érvénytelen dokumentum hibát okoznak, és az egész rekordot nincs behelyezve / frissítve.

Keresés JSON adatok

Hasonlóképpen, JSON_SEARCH () függvény az elérési utat a talált előfordulása, vagy NULL, ha nincs találat. Meg kell átadni JSON dokumentum, amely egy kereső, «egy» megtalálni az első mérkőzés, «minden» megtalálja az összes mérkőzést, és a keresési karakterláncot, például:
-- minden könyv címkék kezdetű „Java”:
SELECT * FROM `book`
HOL JSON_SEARCH (címkék, 'egy', "Java%) nem nulla;

Path JSON formátumban értéket jelöl, és fel lehet használni a kivonat vagy részeit módosítani a dokumentumot. JSON_EXTRACT () funkció világosan látható extrahálásával egy vagy több értéket.
-- értéke "SitePoint":
SELECT JSON_EXTRACT (
„”
'$ .website'
);

Egész úton, hogy meghatározzák a JSON kezdődik $ követő többi választó.

  • pont, majd egy nevet, mint $ .website
  • [N], ahol N a helyzetben a tömbben, ahol az indexelési nulla
  • a. [*] helyettesítő karakterek, amely meghatározza a tagok száma a tárgy
  • a [*] helyettesítő karakterek, amely meghatározza az összes tagja a tömbben
  • előtag ** utótagot helyettesítőkarakterek, amely meghatározza az összes utakat, hogy kezdődik egy specifikus utótagot, és a végén egy bizonyos előtagot.

Figyelembe véve a JSON dokumentumot:

  • $ .a értéke 1
  • Visszatér $ .c [3, 4]
  • $ .c [1] visszatér 4
  • $ .d.e visszatér 5
  • $ **. E visszatér [5]

Isolation útvonal JSON a kérelemben

Tudjuk kivonat az első tag iszap könyv a táblát lekérdezés:

SELECT
Íme,
címkék -> "$ [0]" AS `tag1`
FROM `book`;

Egy bonyolultabb Tegyük fel például, hogy van egy felhasználói tábla a JSON adatprofilt, például:

Tudjuk kivonat a Twitter nevet a JSON módon:

SELECT
név, profil -> "$ twitter." AS `twitter`
FROM `-használó;

SELECT
név, profil -> "$ twitter." AS `twitter`
FROM `-használó
WHERE
profil -> "$ twitter." IS NOT NULL;

Változások a JSON

Számos MySQL függvények, lehet, hogy változások a JSON dokumentum míg evezés útvonalakat. Ezek közé tartoznak:

  • JSON_SET (doc, útvonal, Val [, útvonal, Val].) -
    betétek vagy frissíti az adatokat a dokumentumban
  • JSON_INSERT (doc, útvonal, Val [, útvonal, Val].) -
    dinnye botok a dokumentumban
  • JSON_REPLACE (doc, útvonal, Val [, útvonal, Val].) -
    Ez helyettesíti az adatokat a dokumentumban
  • JSON_MERGE (doc, doc [, doc].) -
    Egyesíti a két dokumentum
  • JSON_ARRAY_APPEND (doc, útvonal, Val [, útvonal, Val].) -
    Ez hozzáadott értéket jelent a tömb végéhez
  • JSON_ARRAY_INSERT (doc, útvonal, Val [, útvonal, Val].) -
    Hozzáteszi tömb dokumentum
  • JSON_REMOVE (doc, útvonal [, útvonal].) -
    törli az adatokat a dokumentumból

Kézikönyv MySQL további információt nyújt a típusát JSON adatok és kapcsolódó JSON funkciókat. Ismét arra kérem, hogy ne használja a JSON, ha nem feltétlenül szükséges. Akkor szimulálni a teljes dokumentum-orientált NoSQL adatbázis MySQL, de jó lenne tagadják sok előnye SQL, és akkor is megy a valós rendszer NoSQL. Mint mondják, a JSON adattípusok mentheti erejét a még homályos melléklet követelményeinek SQL-alapú.

Kapcsolódó cikkek