Wpis z mikrobloga

#webdev #bazydanych #sql #postgresql

Mirki mam pytanie, otóż w pewnej bazie danych najważniejsze informacje o użytkownikach, przechowuję w 2 tabelach: users i settings (tu jest klucz obcy do id z users). Tabela users nie ma żadnych wartości NULL, natomiast settings ma większość wartości NULL dopóki użytkownik ich nie uzupełni.

Przy pobieraniu dużej ilości rekordów z users i settings JOINowanie tabeli settings zajmuje dużo czasu. Profesor od baz danych z polibudy powiedział, że on scalił by obie tabelę. Z drugiej jednak strony, jeżeli jakaś kolumna ma puste wartości to powinno się zrobić tabelę pomocniczą dla niej np users_lang (atomizacja itd). Co wy o tym sądzicie? Dodam, że baza będzie bardzo duża w przyszłości.
  • 28
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@msq: czyli trzymasz podstawowe dane a potem key, value, user_id?

ja bym zwyczajnie trzymał dane z jednego modelu w jednej tabeli, jak mi przyjdzie zbiór innych modeli przyłączyć (np zdjęć) to łącze relacją modele (i w zależności od relacji polimorfizm albo wiele do wielu i i śmiga ;) ), ale każdy może zdobywać własne doświadczenie ( ͡° ͜ʖ ͡°)
  • Odpowiedz
czyli trzymasz podstawowe dane a potem key, value, userid?


@kowad: Różnie. Zależy od aplikacji. Tam gdzie user jest tylko użytkownikiem systemu i wszystko czego potrzeba to email, hasło, jego grupa czy status - wszystko siedzi w jednej tabeli.

Gdzie indziej, tam gdzie z uzytkownikiem są zwiazane na przykład finanse, jego stawka uzależniona od wielu różnych parametrów - jest to rozbite na dwie czy
  • Odpowiedz
@msq: no to normalne, już przy 2, 3 bym dawał następną tabelę / model... no ale tutaj autor mówi, że nie ma takiej możliwości.
  • Odpowiedz
@Zaszczyk: A może konkretne liczby podasz? Ile masz rekordów w tablicy i ile wyciągasz i jak często. Są jeszcze zmaterializowane widoki ale one też mają pewne obciążenie. No i wklej exlain analyze na depesza.

Jesli jedna z wlasciowosci klasy to wielowymiarowa tablica o nieokreslonej liczbie elementow to co wtedy? Mozne zserializowac i nadal trzymac w jednej kolumnie, tyle ze wyszukiwanie staje sie problematyczne....


@msq: To Postgres, są natywnie
  • Odpowiedz
To Postgres, są natywnie tablice i JSON store


@plushy: Mówiłem ze nei znam za bardzo postgresa. Jeśli tak i jeśli da się to nromalnie wyszukiwać z poziomu SQL bez dramatycznego spadku wydajności to spoko.
  • Odpowiedz