Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

JSON tip podataka

[es] :: MySQL :: JSON tip podataka

Strane: 1 2

[ Pregleda: 6031 | Odgovora: 27 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: JSON tip podataka15.05.2018. u 16:04 - pre 71 meseci
Relaciona baza treba da ima jednostavan i jasan interfejs i da izvršava komande pouzdano i što brže. To dolazi u koliziju sa željom da baza bude "pametna" i da razume "objektne podatke" (btw JSON nema veze sa objektima, iako mu ime to sugeriše).

Na kraju krajeva, uvek može da se napiše proizvoljno "pametan" API layer iznad relacione baze, pretpostavljam da ih već ima po netu kolko hoćeš.

Takođe, JSON se vremenom nije baš najbolje pokazao za promet bogato struktuiranih podataka, GraphQL je the new sh*t.

(Izvinjavam se, greškom sam ostavio dve poruke umesto da editujem prvu).
 
Odgovor na temu

S A J A
Beograd

Član broj: 226539
Poruke: 1904
*.static.sbb.rs.



+421 Profil

icon Re: JSON tip podataka15.05.2018. u 17:47 - pre 71 meseci
Evo malo da ilustrujem poentu.

Ako u JSON kolonu ubacim string {"name":"John", "age":31, "city":"New York"}, to mu dođe ekvivalentno kao da sam u dotičnu tabelu dodao još 3 kolone, zar ne? Ovo bi database server mogao da interpretira tako što bi dodao te 3 kolone, virtuelne naravno, ali sa svim mogućnostima koje imaju i prave kolone.

Zatim, ako JSON ima sledeću strukturu (skidam primere sa neta):

Code:
{
    "name":"John",
    "age":30,
    "cars": {
        "car1":"Ford",
        "car2":"BMW",
        "car3":"Fiat"
    }
 }


To bi onda značilo da sam u glavnu tabelu dodao 2 kolone i da imam još jednu tabelu "cars" koja ima 3 kolone i ona je relacijom vezana za glavu tabelu. Po istom principu bi database server mogao da doda kolone, napravi virtuelnu tabelu i poveže ih u relaciju. Sve sam, na osnovu strukture JSON-a.

Koja je poenta? Pa da database server ne mora JSON da shvata kao dumb string već podatke može da rasčlanjuje po tabelama i da omogući korisniku podjednake performanse za obradu kao i u slučaju klasičnih relacionih tabela.

 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
178.250.138.210



+1064 Profil

icon Re: JSON tip podataka15.05.2018. u 17:54 - pre 71 meseci
Ne znam dal je to posao database servera ili nekog frameworka sa strane...
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: JSON tip podataka15.05.2018. u 19:33 - pre 71 meseci
Citat:
S A J A:
Ako u JSON kolonu ubacim string {"name":"John", "age":31, "city":"New York"}, to mu dođe ekvivalentno kao da sam u dotičnu tabelu dodao još 3 kolone, zar ne? Ovo bi database server mogao da interpretira tako što bi dodao te 3 kolone, virtuelne naravno, ali sa svim mogućnostima koje imaju i prave kolone.
....
Koja je poenta? Pa da database server ne mora JSON da shvata kao dumb string već podatke može da rasčlanjuje po tabelama i da omogući korisniku podjednake performanse za obradu kao i u slučaju klasičnih relacionih tabela.

Gledaj, to je JAKO puno heavy lifting-a, sve sa ciljem da ti ne mislis nista. Pri tom, DB je nesto sto, generalno, ne skalira sjajno horizontalno, vec uglavnom vertikalno. To sto ti zelis bi, eventualno, mogao neki ORM da ti obezbedi, a nikako baza.

Dodatno, te translacije nisu bas super-proste da se uvek upare, posebno kad u nekima fali neko polje. Sta onda? Da li praviti dve razlicite grupe tabela, ili trpati sve u iste tabele, ili hoces da svaka ide u svoju schema-u.... ? Previse je to "pameti" za upucati u bazu cak i da nije heavy lifting, a jeste.

Mogucnost da se ima document storage je ziva zgoda, jer mozes da izbacis mongo i slicne sisteme iz price, ako ti ne trebaju neke specificne varijante. Upit po json-u je i mongo-u neka olap-like varijanta koja vuce tezak full table scan i realno je i/o dependant. Ima smisla ponekad, ako mora, i samo za izvlacenje specificne date, nikako za redovan rad i updates. :)
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: JSON tip podataka15.05.2018. u 20:04 - pre 71 meseci
@S A J A, jasno mi je to sto hoces, ali ti bukvalno hoces sebi da ustedis ovu liniju koda: db.Accounts.Add(JsonConvert.DeserializeObject<Account>(json))
A ne bi je ni ustedeo, samo bi je skratio.


Da se razumemo, ne kazem da treba spucavati ovako objekte u bazu direktno iz json-a vec svakako treba raditi validaciju ali ako je radis, onda si vec parsirao i obradjivao taj json, nema razloga da ne posaljes deserijalizovan objekat u bazu nego json string.
To sto bi ti hteo da bude implementirano u bazi je mnogo toga sto ne postize nikakvu ustedu.
Da ne kazem da za projekte kakve ti obicno radis, ne moras ni da pipnes bazu vec mozes da radis EF Code First.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.tippnet.co.rs.



+218 Profil

icon Re: JSON tip podataka15.05.2018. u 21:29 - pre 71 meseci
Sajo. To sto ti hoces nije posao baze podataka. Ti zapravo zelis da prosledis JSON bazi a on da pravi virtuelne kolone. To je jako skupo.
Kako bi radio onda update, insert, delete? Npr najjednostavniji DELETE WHERE car='bmw' bi znacilo da zakljucava sve relacije, pa vadi sve key-eve iz virtualnih tabela, pa onda delete odradjuje na stvarnoj tabeli, zatim otkljucava relacije i opet kreira virtualnu tabelu.
Ovo je samo jedan najjednostavniji primer koji je jako skup.
Ne vidim gde je vrednost ove ideje kada ti sem upisa nista drugo ne radis kao da je json vec kao da su obicne tabele? Znaci ti niti vidis da je json, niti radis kao da je json niti ga gledas kao json a zelis da se pamti kao json?
Sta te briga u kojem formatu i kako se pamti? To nije tvoj posao. Bitno ti je da se to odradi kvalitetno.
Zasto nije jednostavnije taj json upisati u odredjenoj db strukturi i raditi sta zelis i onda ako zatreba iscitati i pretvoriti u json?
Ti ili tvoj FW ili ORM treba da poseduje tu funkcionalnost da pri upisu raspodeli json u tabele i da mozes odredjen rezultat querija pretvors u json.
To su dve vrlo jednostavne funkcije sa jedne strane i sa druge strane moze biti vrlo komplikovano i tesko za db.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: JSON tip podataka15.05.2018. u 22:54 - pre 71 meseci
Citat:
S A J A:
Da, upravo sam na ovo mislio. Prenost JSON-a je što je višedimenzionalan i što njegov ekvivalent u bazi predstavlja više tabela povezanih relacijama. Tako onda ispada da JSON koji dobijem od klijenta moram da razlažem, pretvaram u SQL komande i raspoređujem po tabelama a onda, u obrnutom smeru, da skupljam podatke po tabelama, sklapam u JSON i vraćam nazad. Zato i kažem, zar ne bi bilo logično da se i baza podataka malo "prilagodi" scenarijima realnog sveta pa da omogući nešto što bi bilo korisno? Naravno, ne smatram da ovim treba da se odustane od koncepta relacionih podataka već da se JSON podrška ponudi kao DODATAK pa onda da svako može da kombinuje sistem prema svojim potrebama.

Dakle, radilo bi tako da prilikom definisanja JSON tipa podaka, definišeš i njegove ključeve i relacije sa drugim podacima (kako prvim tabelama, tako i drugim JSON-ovima) i onda baza da vodi računa o integritetu (što joj je i posao). Naravno da to sve može na klijentu ali je besmisleno. Ako bi želeo da imam stavke fakture unutar JSON-a, malo je besmisleno da na klijent strani prvo povučem iz baze spisak ID-ova artikala, proverim JSON objekat i onda kad se uverim da je sve ok, pošaljem ga u bazu. Onda šta će mi baza ;)

Ideja iza cele ove priče je da se korisnici (koji to žele naravno), manje bave modeliranjem baze već da db server to uradi za njih. Dakle ako serveru pošaljem JSON određene strukture, koji je naravno višedimenzionalan, prethodno bazi dam neke smernice (koja polja su šta i koji su ključevi), da sama baza napravi sebi interne tabele sa relacijama gde će sve to da vodi. Drugim rečima, to bi zapravio bio jedan layer gde bi se podaci i čuvali interno u nekakvim virtuelnim tabelama a korisnicima predstavljali u vidu JSON objekata.


Ovo što ti želiš nije posao baze nego data sloja u aplikaciji.


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: JSON tip podataka16.05.2018. u 03:06 - pre 71 meseci
Citat:
S A J A:
i pokušao sam da pokrenem diskusiju u pravcu da se poveća vrednost tog formata ali đoka, koliko vidim, nema se mnogo razumevanja. Dok ja ovde pokušavam da "vučem ka napretku" kako bi baze "razumele" objektne podatke, ovde se cela stvar banalizuje tvrdnjom kako je to samo običan string ili dokument bez ikakvog ulaženja u suštinu objekta. Kako bez volje nema ni napretka, tako mi se čini da ćemo duže ostati na relacionim bazama o kojima inače nemam ništa protiv, samo mislim da sve to može bolje.


ne vuces ka napretku vec odbijas da razumes kako se nesto radi "kako treba". ti imas jedan poluprimer gde bi ti "pamet baze" ustedela 10 minuta posla utrosenih jednom i nikad vise. ta ista "pamet" bi osakatila feature (jer ostalih milijardu primera vise ne bi radilo) i onemogucila stotine hiljada drugih korisnika da sa tim rade nesto pametno a desetine hiljada drugih korisnika navela na pogresan nacin da rese realan problem... kao sto si ti sam sebe vec naveo da pogresan nacin da se resi problem pa sad ko martin po diviziji ne pustas jer mislis da ti je ideja do jaja, a nije

kao sto je vec napisano, to o cemu ti pricas se resava drugacije, ili tako sto imas jedan layer na samoj bazi koji to resava (triger) ili tako sto to resavas na data manipulation layer-u u aplikaciji..

a sad, ako si i dalje ubedjen da to tako treba, i mysql i postgresql imaju odlicnu podrsku za json i open source su, zaradices ogromne pare ako to napravis da radi i dovoljno ljudi se slozi sa tobom da je to korisno tako da, go for it :)
 
Odgovor na temu

[es] :: MySQL :: JSON tip podataka

Strane: 1 2

[ Pregleda: 6031 | Odgovora: 27 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.