Utilizarea lui json în mysql

Dacă ați lucrat cu baze de date SQL, cu siguranță veți fi de acord că proiectarea unei structuri pare mai ușoară decât este într-adevăr. Bazele de date SQL cred în structură, motiv pentru care se numesc limbaj structurat de interogări.







Pe de altă parte, astăzi nu este mai puțin populare baze de date NoSQL, care sunt, de asemenea, menționate ca schemă mai puțin - ele nu sunt legate strict la o anumită structură și nu au limitări structurale.

Desigur, fiecare instrument are propriul său domeniu de aplicare, uneori sunt necesare soluții combinate. Ce se întâmplă dacă puteți structura rigid anumite părți ale aplicației, iar altele o fac flexibil? MySQL în versiunea 5.7.8 a introdus un nou tip de date - JSON, care permite rezolvarea acestei probleme.

De ce folosiți JSON

În acest moment probabil va intrebati de ce anume trebuie să utilizați JSON, astfel încât atunci când MySQL se descurcă cu funcțiile sale.

Să ne uităm la un exemplu. Să presupunem că creați o aplicație web în cazul în care aveți nevoie pentru a salva setările personalizate în baza de date. Ca o regulă, puteți crea o pagină separată cu id câmpuri. user_id și valori, sau salvați-le într-un anumit șir de format și analiza în timpul rulării. Acest lucru funcționează bine dacă aveți câțiva utilizatori. Dacă aveți mii de utilizatori și cinci chei de configurare, este deja cinci mii de intrări, care, cu toate acestea, sunt doar o mică parte a cererii dumneavoastră. Analiza string formatat creează doar o povară suplimentară în runtime. Utilizarea JSON în acest caz poate salva resursele, reduce numărul de înregistrări din baza de date și numărul de solicitări suplimentare.

Înainte de a intra în funcționalitatea de studiu JSON, avem nevoie de un exemplu de bază pentru muncă. Deci, mai întâi schița structura. Vom lua în considerare cazul utilizării unui magazin online, în cazul în care există mai multe branduri și o varietate de produse electronice. Deoarece gadget-uri diferite au atribute diferite (a se compara cu Macbook vid) modelul folosit de obicei Entitate-Atribut-Valoare (EAV) model. Dar noi renunța la aceasta, după cum vom folosi JSON.

Baza noastră de date va fi denumită magazin și va avea trei mese - branduri. categorii și produse. Tabelele de mărci și categorii vor fi foarte asemănătoare și vor avea doar câmpurile id și numele.

Acum, creați tabelul de produse cu numele, numele câmpului. brand_id. category_id și atributele ".







Structura noastră definește două chei externe pentru câmpurile brand_id și category_id. referindu-se la tabelele de marci și categorii, respectiv.

Câmpul atributelor a fost definit ca JSON, care ne permite să folosim funcția JSON disponibilă în MySQL pentru acest câmp.

Aceasta este structura bazei de date pe care o avem ca rezultat.

Utilizarea lui json în mysql

Crearea unei înregistrări într-un tabel cu un câmp JSON este destul de simplă. Tot ce aveți nevoie este să adăugați un JSON valabil la valoarea acestui câmp în cererea inserați.

De asemenea, în loc de un obiect JSON pentru a codifica, puteți utiliza built-in funcția JSON_OBJECT. Această funcție are o listă de perechi cheie-valoare de forma JSON_OBJECT (key1, valoarea1, key2, valoare2, ... cheie (n), valoarea (n)) și returnează un obiect JSON.

Merită să acordați atenție funcției JSON_ARRAY. care returnează o serie de obiecte JSON.

Dacă specificați o cheie de mai multe ori - va fi utilizată numai prima pereche cheie-valoare. De asemenea, tastele obiect sunt sortate și șterse de spații la început.

O altă funcție pentru lucrul cu JSON este JSON_MERGE. Funcția necesită mai multe obiecte JSON și returnează o combinată.

În JSON_MERGE transferăm doar obiecte. Unele dintre ele au fost create folosind JSON_OBJECT. pe care ați dezasamblat-o mai devreme. Dacă cheia este repetată de mai multe ori în JSON_MERGE, valorile acesteia vor fi combinate într-o matrice.

Putem verifica rezultatul utilizând funcția JSON_TYPE. care returnează tipul valorii stocate.

Deci, avem mai multe produse în baza noastră de date.

Pentru interogările normale MySQL, clauza WHERE pare destul de simplă - trebuie să specificați un câmp, un operator și o valoare. Pentru câmpurile JSON acest lucru nu va funcționa.

Pentru a selecta rândurile dorite din câmpul JSON, trebuie să fiți familiarizați cu conceptul căii. Cele mai simple exemple ale căii sunt selectorii css. A doua parte a puzzle-ului este funcția JSON_EXTRACT. care ia ca argument calea pentru traversarea obiectului JSON.

De exemplu, suntem interesați de televizoare cu porturi USD sau HDMI.

Pentru a actualiza valorile JSON, trebuie să utilizați JSON_INSERT. Funcțiile JSON_REPLACE și JSON_SET. Aceste funcții necesită, de asemenea, o cale de a indica părțile obiectului JSON pe care doriți să le modificați. Ieșirea acestor funcții este un obiect valid JSON cu modificările aplicate.

Calea $ .chipset specifică locația proprietății chipset-ului în rădăcina obiectului.

Să actualizăm proprietatea chipsetului folosind JSON_REPLACE.

În cele din urmă, avem funcția JSON_SET și o folosim pentru a actualiza televizoarele.

Aceste funcții par a fi identice, dar există o diferență în comportamentul lor. JSON_INSERT adaugă o proprietate la obiect numai dacă nu există deja. JSON_REPLACE înlocuiește proprietatea numai dacă există. JSON_SET adaugă o proprietate sau o înlocuiește dacă există deja.

Aici vom lua în considerare două cazuri de ștergere a datelor.

Primul este ștergerea unei chei de valoare particulară din câmpurile dvs. JSON, a doua este ștergerea întregului rând cu o condiție JSON.

De exemplu, nu mai oferim informații despre mount_type pentru camere și doriți să le ștergeți pentru toate camerele. Vom face acest lucru folosind JSON_REMOVE. care returnează JSON-ul actualizat fără cheia specificată în cale.







Articole similare

Trimiteți-le prietenilor: