Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem MySQL select podle json BLOBu

Mám MySQL DB. V ní je tabulka subuser, která jako poslední sloupec obsahuje BLOB data, ve kterém jsou data v json formátu, např.:

{"data":"{\"username\":\"LE056168\",\"firstname\":\"Lenka\",\"lastname\":\"Hor\\u00e1\\u010dkov\\u00e1\",\"group\":2,\"segment\":3,\"admin\":\"0\"}","name":"Lenka Hor\u00e1\u010dkov\u00e1","email":"xyz@seznam.cz","subuser_id":"4450","admin":"0"}

A já potřebuju selektovat záznamy podle group_id, např. všechny, které budou mít group_id = 1.

Našla jsem tohle:

SELECT *
FROM cps_subuser
WHERE data
REGEXP "^{.*\"group_id\":0,.*}$"

ale bohužel při daném rozsahu DB (cca 4 000 záznamů, nové stále přibývají), je to nepoužitelně pomalé, zvláště, když je to součástí joinu ještě několika dalších tabulek, které mají také řádově tisíce záznamů[/code]

Je nějaký jiný efektivnější způsob jak se k datům dostat? Když přijdu s nápadem data extrahovat do samostatných sloupečků, tak se mnou šéf vyrazí dveře, protože on je na tento způsob ukládání dat moc pyšný. Vysvětloval mi, že to tak prý je z bezpečnostních důvodů.

Předmět Autor Datum
Bohuzel takto ulozena data jsou naprosta kravina a popiraji princip ulozeni dat na SQL serverech a p…
Jan Fiala 07.06.2012 06:03
Jan Fiala
Nejen vybírat, já potřebuju udělat join přes to group_id
Anicka 07.06.2012 10:11
Anicka
Proste to je naprosta kravina. Nazev relacni databaze vznikl od toho, ze mezi tabulkami existuji rel…
Jan Fiala 07.06.2012 12:11
Jan Fiala
Ono to původně bylo normálně jako jednotlivé sloupečky. Tohle šéfové vymysleli teď jako novinku :-(…
Anicka 07.06.2012 16:51
Anicka
Zkus jim vysvětlit, že při tisících záznamů to bude nepoužitelné a pokud s eočekává vyšší trafic - v…
Jan Fiala 07.06.2012 17:30
Jan Fiala
U Vás ve firmě bych fakt nechtěl pracovat, ten šéf by už byl dávno mrtvý a já bych seděl za vraždu..…
MaSo 07.06.2012 10:22
MaSo
Tak ať ty data rovnou zahazuje, to bude rychlejší a bezpečnější. A dostupnost dat bude prakticky ste…
Wikan 07.06.2012 16:56
Wikan
:-D:-D:-D:-D O té bezpečnosti si myslím svoje, dělala jsem mj. OKpráci (to je ten soft, co ho všich…
Anicka 07.06.2012 22:38
Anicka
Ono je to stejné, jako by šéf železářství prohlísil, že kvůli zlodějům se všechny šroubky a matičky… poslední
Jan Fiala 08.06.2012 06:52
Jan Fiala

Proste to je naprosta kravina.
Nazev relacni databaze vznikl od toho, ze mezi tabulkami existuji relace, ktere zajistuji datovou integritu, zrychluji vybery.
Tim, ze ruzna data ulozis do jednoho pole (navic jako retezec) a pri zpracovani to musis opet rozdelovat je fakt zhuverilost.

Za "udajnou" bezpecnost budes platit tim, ze vsechny vybery budou trvat milionkrat dele, databaze bude zbytecne zatezovana, nebude zajistena integrita dat.
Jakmile dojde k chybnemu zapisu do jednoho blobu, tak se to cele zborti.

Ono to původně bylo normálně jako jednotlivé sloupečky. Tohle šéfové vymysleli teď jako novinku :-( a nadšeně to dali do několika tabulek.

Samozřejmě je to děsně pomalé, zpracování importního souboru o několika stech záznamech (vyhledání údajů k nim do DB a kontrola, co se má updatnout a co aktuální je) trvá tak dlouho, že mi to shodí připojení a to už jsem si nastavila v php.ini time limit na 0.

Zkus jim vysvětlit, že při tisících záznamů to bude nepoužitelné a pokud s eočekává vyšší trafic - více klientů připojených současně, tak to server nebude stíhat a budou muset pořídit kvůli této novince výkonější počítač.

:-D:-D:-D:-D

O té bezpečnosti si myslím svoje, dělala jsem mj. OKpráci (to je ten soft, co ho všichni chtěli začátkem roku zpět) a soft pro mezibankovní platební styk, tam se zcela nepochybně na bezpečnost dat kladl velký důraz, ale data do db v json formátu nikoho zapisovat nenapadlo ani omylem.

Ono je to stejné, jako by šéf železářství prohlísil, že kvůli zlodějům se všechny šroubky a matičky sesypou do jedné velké bedny a na noc se budou zamykat.
Ale nezajímá ho, že když příjde zákazník, tak prodavač stráví 2 hodiny přebíráním bedny, aby mu našel požadované 3 šroubky. Kdyby to bylo rozdělené v krabičkách jako předtím, stačil by obsloučit 20 dalších a zisk prodejny by byl mnohem vyšší.

Zpět do poradny Odpovědět na původní otázku Nahoru