![]() |
![]() ![]() |
![]() |
![]()
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? |
|
|
![]()
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
|
|
|
![]()
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. |
|
|
![]()
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...
|
|
|
![]()
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 ![]() 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 |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 08:18 |