1. Sissejuhatus
1.1 JSON-i tähtsus
Kaasaegses veebiarenduses muutub andmete vahetamine üha keerukamaks. JSON (JavaScript Object Notation) on kerge ja struktureeritud andmevorming, mida kasutatakse laialdaselt andmete edastamiseks ja salvestamiseks. MySQL hakkas alates versioonist 5.7 toetama JSON-andmetüüpi, mis lihtsustab JSON-andmete käsitlemist andmebaasis.
1.2 JSON-i kasutamine MySQL-is
Selles artiklis käsitleme üksikasjalikult MySQL-i JSON-i põhilisi toiminguid, jõudlusega seotud kaalutlusi ning praktilisi kasutusviise. Anname teadmisi, kuidas nii algajad kui ka edasijõudnud kasutajad saavad MySQL-is JSON-i tõhusalt kasutada.
2. Mis on JSON MySQL-is
2.1 JSON-i põhitõed
JSON on lihtne vorming, mis struktureerib andmeid võtme-väärtuse paaridena. Seda kasutatakse laialdaselt veebirakenduste API-des ja andmeedastuses, kusjuures selle tugevuseks on kergus ja loetavus. MySQL-is saab JSON-andmetüüpi kasutades JSON-andmeid otse andmebaasis salvestada ja töödelda.
2.2 MySQL-i JSON-andmetüüp
MySQL 5.7-s kasutusele võetud JSON-andmetüüp vajab kettaruumi sarnaselt LONGBLOB- või LONGTEXT-tüüpidele. Lisaks teostab MySQL sisestamisel JSON-i valideerimist, et tagada andmete korrektsus. See väldib vigaste JSON-andmete lisamist andmebaasi.
2.3 JSON-i kasutusjuhtumid
MySQL-is JSON-i kasutamise peamised juhtumid on järgmised:
- Keerukate andmestruktuuride salvestamine
- API-st saadud andmete salvestamine muutmata kujul
- Muutuva skeemiga andmete haldamine

3. MySQL-i JSON-i põhitoimingud
3.1 JSON-veeru loomine
JSON-andmete salvestamiseks saab luua veeru, määrates json
andmetüübi järgmiselt:
CREATE TABLE json_data (
doc JSON
);
3.2 JSON-andmete lisamine
JSON-andmete sisestamiseks kasutatakse INSERT
-käsku. MySQL kontrollib sisestamisel, kas andmed on õigesti vormindatud JSON, ning vigaste andmete korral tagastab vea.
INSERT INTO json_data(doc) VALUES ('{"a": {"b": ["c", "d"]}, "e": "f"}');
JSON_OBJECT
-funktsiooni abil saab luua JSON-objekti võtme ja väärtuse paaridest.
INSERT INTO json_data(doc) VALUES (JSON_OBJECT('key1', 'value1', 'key2', 'value2'));
3.3 JSON-andmete päring
Lisatud JSON-andmete otsimiseks kasutatakse funktsiooni JSON_EXTRACT
, mis toob välja väärtuse vastavalt määratud teele.
SELECT * FROM json_data WHERE JSON_EXTRACT(doc, '$.e') = 'f';
Samuti võib kasutada lühendatud süntaksit ->
operaatori abil.
SELECT * FROM json_data WHERE doc->'$.e' = 'f';
3.4 JSON-andmete uuendamine
JSON-andmeid saab osaliselt muuta funktsiooni JSON_SET
abil. See funktsioon uuendab määratud teel olevat väärtust ja tagastab uue JSON-objekti.
UPDATE json_data SET doc = JSON_SET(doc, '$.a.b[0]', 'new_value');
4. Jõudlusega seotud kaalutlused
4.1 Lisamise jõudlus
MySQL-is JSON-veergu andmete lisamisel pole jõudluses olulist erinevust TEXT
– ja JSON
-tüüpide vahel. Testide järgi kulub 50 000 rea lisamiseks JSON-tüüpi veergu umbes sama palju aega kui TEXT-veergu lisamisel.
4.2 Uuendamise jõudlus
JSON-andmete uuendamisel on JSON_SET
-i kasutamine efektiivne, kuna see võimaldab muuta ainult määratud välju, mitte kogu andmeid. Ka 50 000 rea osalise uuendamise korral on jõudlus hea.

5. Parimad tavad JSON-i kasutamisel MySQL-is
5.1 JSON-i sobivad kasutuskohad
JSON sobib keerukate andmestruktuuride ja muutuva skeemiga andmete salvestamiseks. Kuid struktureeritud andmete puhul on tavaliselt tõhusam kasutada relatsioonilisi tabeleid.
5.2 JSON-andmete indekseerimine
MySQL-is saab JSON-veergude jaoks luua virtuaalseid veerge (Virtual Column) ja lisada neile indeksid, mis parandab päringute jõudlust.
ALTER TABLE json_data ADD COLUMN e_value VARCHAR(255) AS (doc->'$.e'), ADD INDEX (e_value);
5.3 Levinud vigade vältimine
- Vältida JSON-veergude liigset kasutamist ja ära unusta relatsioonilise andmebaasi tugevusi.
- Seada sobivad indeksid, et tagada päringute efektiivsus.
- Jälgida, et JSON-andmed ei muutuks liiga mahukaks, ning vajadusel normaliseerida andmeid.
6. MySQL-i täiendavad JSON-funktsioonid
6.1 Muud JSON-funktsioonid
MySQL-is on mitmeid funktsioone JSON-andmete käsitlemiseks. Näiteks saab JSON_APPEND
-iga lisada uusi elemente või JSON_REMOVE
-iga eemaldada kindlaid välju.
-- Andmete lisamine
UPDATE json_data SET doc = JSON_APPEND(doc, '$.a.b', 'new_element');
-- Andmete eemaldamine
UPDATE json_data SET doc = JSON_REMOVE(doc, '$.a.b[0]');
6.2 Kombineerimine SQL-funktsioonidega
JSON-funktsioone saab kombineerida tavapäraste SQL-funktsioonidega keerukamate päringute loomiseks. Näiteks saab GROUP BY
või ORDER BY
klauslis kasutada JSON-andmeid.
SELECT JSON_EXTRACT(doc, '$.e') AS e_value, COUNT(*) FROM json_data GROUP BY e_value;
7. Kokkuvõte
Selles artiklis tutvustasime MySQL-is JSON-i põhilisi toiminguid ja täiendavaid funktsioone. JSON-i kasutamine MySQL-is muudab keerukate andmete salvestamise ja töötlemise lihtsamaks. Jõudluse ja parimate tavade teadmine aitab luua tõhusamat andmehaldust.