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 885
Pomógł: 231
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
Pyton_000
post
Post #2





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 (IMG:style_emoticons/default/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

Posty w temacie


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

 



RSS Aktualny czas: 1.01.2026 - 15:39