Sunt foarte atasat de MySQL (experienta, incredere,etc) insa sunt momente cand nu prea stiu cum sa il fac mai destept.
De exemplu sunt momente in care am nevoie de campuri care pot primi liste, gen: department_ids: (12,232) sau name:{ "first"=>"Cata","last":"Money"} pe care sa poti face si cautari. Ce solutii aveti (in afara de a folosi un Posgresql sau ceva din suitele NoSQl)
Ai putea sa faci un tabel MyISAM cu o coloana text cu index “full text” (unde sa faci o agregare toate valorile pe care le-ai stocat serializat in tabela originala, eventual cu un prefix pentru a le identifica mai tarziu) si o coloana cu id-ul row-ului corespunzator (tot din tabela originala).
Dupa care sa faci un full text search pe coloana agregata dupa termenii cautati ca sa aflii id-urile row-urilor cu care poti face join … sau alt select.
Personal, nu consider o idee buna. SQL sunt baze de date relationale si pt asta sunt optimizate. Prin serializare sau json_array nu faci altceva decat sa tii un tabel intr-un tabel.
E ok pt chestii ce nu tin de DB, gen UI settings sau mai stiu eu ce
Solutii, fa tabele separate, fa views sunt mai rapide.
ia un redis, un memcache tine chestiile alea in ram
Daca ai nevoie sa faci operatii sql pe camputi serializate, nu prea e conceputa baza de date cum trebuie. imho
re-read partea cu “relational”.
serializarea se foloseste pt salvarea unui obiect.
json cum ii zice numele, javascript Object notation, lafel
Astea le folosesti doar daca ai nevoie sa salvezi starea unu obiect ce va fi folosit intr-un limbaj object-orientated.
Eu una as merge pe tabel json, pentru ca mai nou MySQL suporta chestia asta. Doar pentru acel tip de date. Daca faci si indecsi virtuali, poti chiar sa cauti inauntrul acelui json. Pentru mine a fost mana cereasca la un moment dat.
Stiu ca nu e pentru toata lumea solutia sta, dar eu cred ca merita avuta in vedere.