Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JSON][MySQL] Przechowywanie danych, Przechowywanie danych w mysql zakodowanych jako JSON
Tomplus
post
Post #1





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Witam,

Mam szybkie pytanie, acz odpowiedzi mogą być dłuższe.

W pracy, ale nie tylko w pracy bo także w projektach OpenSource spotykam się z rozwiązaniami gdzie w kolumnach tabel baz SQL przechowywane są dane jako string JSON. Przykładem takiego projektu jest Wordpress. Który właśnie tak przechowuje tak dane, bardzo dużo danych. U mnie jako obiekt JSON przechowuje się dane klienta [adres, telefon, imię, nazwisko], czy parametry zamówienia.

Pytanie czy jest to racjonalne podejście i efektywne z punktu widzenia programowania?

Z jednej strony trudniej się przeszukuje takie dane, bo nie można wykonać zapytania który odwołuje się do obiektu bądź tablicy i trzeba tworzyć własne metody wyszukiwania treści, z drugiej strony, tabele MySQL są bardziej przejrzyste, bo nie rozciągają się na kilkanaście kolumn, często mających puste wartości.

Jakie są wasze zdania na takie łączenie SQL i JSON?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Mam nadzieję że usatysfakcjonuje Cię taka odpowiedź: https://dev.mysql.com/doc/refman/5.7/en/json.html
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Ja operacje JSON SQL znam, co nie znaczy że wszędzie można stosować. Jest jeszcze wiele baz danych np. MySQL które nie mają tej obsługi. Tutaj dopiero od wersji 5.7.8.

Ja zadałem pytanie nie o manual czy konkretną pomoc, a bardziej własną opinię użytkowników. Także twoją Pyton_000.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Jak chcesz sbie trzymać dane w JSONie, to trzymaj je w pliku tekstowym. Bazy służą do czegoś zupełnie innego...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jeśli nie masz obsługi natywnej JSON to trzymanie takich struktur jest bez sensu z pkt widzenia MYSQL (Tutaj albo PgSQL albo NonSQL wchodzi).

Samo trzymanie JSON nie jest złe, ale zależy do czego. Ja np. trzymam jako JSON opcje konfiguracji czegoś tam gdzie i tak musiałbym pobrać z BD wszystkie opcje na raz. Tutaj mam 1 wiersz.
Z przykład który Ty pokazałeś trzymanie JSON nie ma najmniejszego sensu. Nie ma tu co biadolić że tabelki brzydko wyglądają jak są puste czy coś. Nie ogląda się ich wink.gif

Jeśli z jakiegoś powodu boli cię szerokość tabel bo jest dużo pól a wiele z nich jest pusta w każdym rekordzie (w różnych rekordach mogą to być różne pola) to warto się zastanowić czy nie zmienić struktury na ilość. Czyli tworzysz tabelkę: id, type, type_id, name, value
Wtedy np. masz:
id, product, 1, price, 12
id, product, 1, color, red
id, product, 2, color, green
id, product, 3, price, 2000

Do takiej struktury dobrze jest mieć obiekt z mapowaniem i dostępnymi wszystkimi polami aby pobrane wiersze z BD od razu zmapować na pola klasy. Wygodniej bo nie musisz ręcznie potem sprawdzać czy Product hasColor = red.


Reasumując. JSON można pchać o ile jak sam zauważyłeś nie będziesz w nim szukał, a dane które są tam zawarte są w 90% przypadkach muszą być pobrane wszystkie. Jeśli na dodatek masz obsługę natwyną przez BD to ten minus znika generalnie.


@mmmmmmm ot żeś wymyślił.

Ten post edytował Pyton_000 15.10.2016, 22:20:12
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


@Pyton_000
Wymyśliłem to samo co ty, tylko napisałem to dużo prościej i dosadniej.

@Pyton_000
Wymyśliłem to samo co ty, tylko napisałem to dużo prościej i dosadniej.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:23