• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Json czy oddzielne tabele - duża ilość danych

0 głosów
516 wizyt
pytanie zadane 22 maja 2020 w SQL, bazy danych przez Greeenone Pasjonat (16,100 p.)
Hej,

Mam pewną zagwozdkę dotycząca przechowywania danych w bazie danych. Użytkownicy będą mogli przypisać różne dane do danej zakładki i przypisać dzień. Dane te są powtarzalne, tzn że mają opcje klonowania. Użytkownik wypełnia dane a następnie niżej ma "Dodaj kolejne dane" i tak dalej, i dalej. Może tych danych wypełnić ile tylko chce. Dane z aktualnego dnia są wyświetlane w panelu użytkownika. Tutaj nie wiem czy użyć json'a czy jednak tabel MySQL.

Mogę zrobić za pomocą relacji albo wszystkie dane z jednego dnia dać do jsona który będzie przechowany w bazie. Jedyną interakcją będzie podgląd danych oraz ich edycje (brak jakichś wyszukiwarek etc)

Początkowo chciałem zrobić relację, ale z moich obliczeń wynika, że po roku w tabeli może się znaleźć do (Przy 1 000 aktywnych użytkowników) 20 000 000 rekordów. Po użyciu Jsona, ilość ta zmniejszyła by się do 2 400 000 rekordów.

1 odpowiedź

+1 głos
odpowiedź 22 maja 2020 przez Comandeer Guru (607,960 p.)

20 mln to nie brzmi znowu jak jakaś kolosalna baza. Nie do końca też wiem, jak to obliczasz?

O wiele sensowniej IMO zrobić normalną relację. Wówczas nie trzeba będzie kombinować z obsługą JSON-a, bo dane będą ot tak dostępne bezpośrednio z bazy. No chyba że użyjesz tego nowego typu w MySQL, JSON – z tym że to IMO wciąż będzie bardziej skomplikowane niż zrobienie tego "tradycyjnie".

komentarz 22 maja 2020 przez Ehlert Ekspert (215,230 p.)

yes

Dodam od siebie że przy tabelach takich rozmiarów warto włączyć query loga, wybrać najczęstsze query i popracować explainem w celu ogarnięcia jakichś indexów.

komentarz 22 maja 2020 przez Greeenone Pasjonat (16,100 p.)
Hej, dzięki za odpowiedź.

Wytłumaczę na podstawie todo listy (Przyznaje, że moje tłumaczenie nie jest zbyt jasne).

Administrator dla każdego użytkownika może przypisać zgrupowane todo na dany dzień. Dajmy na to grafik otrzymuje dwie grupy todo na poniedziałek:

UI Design [Zrobić design logowania - resetowania hasła - strona główna]
UX design [Zrobić ux ustawień - czatu]

I teraz można zrobić tak, że tworzy w bazie grupę o nazwie UI Design a następnie przez relacje do UI Design przypisuje design logowania, resetowania hasła oraz strony głównej

Druga opcja nad którą właśnie rozmyślałem, to "spakować" todo do Json i stworzyć po prostu kolumnę [UI design] [lista todo w json]
komentarz 22 maja 2020 przez Comandeer Guru (607,960 p.)
Czyli używając JSON-a tak po prawdzie będziesz mieć duplikowane dane, o ile dobrze rozumiem? Bo zarówno UX, jak i UI, będą mieli ten sam task?
komentarz 22 maja 2020 przez Greeenone Pasjonat (16,100 p.)
Nie nie, ogólnym zamysłem było stworzeniu rekordu:
[ ID ][ Title ][ Tasks ][ Date ]
Wszystkie zadania lądowałby w jsonie do tasks.

Wydaje mi się jednak, że lepszym rozwiązaniem będzie tak jak pisałeś. Każdy rekord to jeden task i relacyjnie by się odnosiło do grupy
komentarz 22 maja 2020 przez Ehlert Ekspert (215,230 p.)
Albo nie rozumiem problemu, albo mamy tutaj prostą relację task - grupa 1:n. Zgadza się?

Podobne pytania

0 głosów
0 odpowiedzi 412 wizyt
pytanie zadane 3 lutego 2017 w SQL, bazy danych przez EasyPeasy Użytkownik (550 p.)
0 głosów
1 odpowiedź 914 wizyt
pytanie zadane 27 lipca 2020 w PHP przez Samek2222 Początkujący (440 p.)
–1 głos
2 odpowiedzi 950 wizyt
pytanie zadane 9 maja 2016 w PHP przez skrzatjedyny Gaduła (3,150 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,322 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...