Aktywne Wpisy

MiszczJoda +399
Mirabelki i Mireczki, pijcie ze mno kompot! (⌐ ͡■ ͜ʖ ͡■)
A z jakiej okazji zapytacie?
Jeśli stoicie to lepiej usiądźcie, a jak siedzicie to trzymajcie się mocno bo nie uwierzycie jak
A z jakiej okazji zapytacie?
Jeśli stoicie to lepiej usiądźcie, a jak siedzicie to trzymajcie się mocno bo nie uwierzycie jak
źródło: 20250119_125717
Pobierz
mirko_anonim +1
✨️ Obserwuj #mirkoanonim
Ponad rok temu rozstałam się z wieloletnim partnerem z którym byłam od 3 roku studiów. W pewnym momencie zaczęło się psuć i po próbach walki o związek podjęliśmy decyzję o rozstaniu. Przebolałam, przepracowałam, czuję się gotowa na nowy związek. Z tyłu głowy mam jednak fakt, że mam 29 lat, wszystkie koleżanki są dawno po ślubie, niektóre mają nawet dzieci a ja zaczynam w tym wieku od nowa. Czy
Ponad rok temu rozstałam się z wieloletnim partnerem z którym byłam od 3 roku studiów. W pewnym momencie zaczęło się psuć i po próbach walki o związek podjęliśmy decyzję o rozstaniu. Przebolałam, przepracowałam, czuję się gotowa na nowy związek. Z tyłu głowy mam jednak fakt, że mam 29 lat, wszystkie koleżanki są dawno po ślubie, niektóre mają nawet dzieci a ja zaczynam w tym wieku od nowa. Czy


![Bambu private keys leaked less than 24 hours after announcement [ENG]](https://wykop.pl/cdn/c3397993/47d3cf69fb7214bb7efde0d08672bb1589a24d8e8f223f01c1275006175b2989,q80.jpg)


Mam takie pytanie do bardziej doświadczonych dev'ów.
Sprawa jest następująca.
Jest strona, na której osoba zakłada konto (podaje nazwę firmy, swoj login i hasło) i automatycznie staje się administratorem w obrębie swojego konta w danej firmie.
W swoim koncie ma możliwość tworzenia zwykłych użytkowników jak i administratorów.
Każdy użytkownik w miesiącu będzie generować średnio 50 rekordów w bazie. Zakładając że osoba która założyła konto doda 50 użytkowników to daje 2500 rekordów na miesiąc. Nie jest to jakoś super dużo ale idzmy dalej.
Kolejna osoba zakłada konto i tworzy 100 użytkowników (100*50 = 5 000 ).
Czyli przy dwóch 'firmach' mamy już 7 500 rekordów. I tak dalej i tak dalej..
Teraz moje pytanie, jaką strukturę powinna mieć baza aby była wydajna? (Raczej byłbym chciałbym iść w stronę #postgresql niźli #mysql głównie ze względu na bardziej zaawansowane funkcje jakie posiada baza.)
Czy lepiej byłoby stworzyć jedną tabelę np.
wpisya w niej kolumnyid_firmy,id_uzytkownika,id_dodajacego_rekord,wartosc, i jeszcze inne kolumnyi tak przeszukiwać tabele dla każdego zalogowanego pracownika ( + ewentualnie trzymać dane za ostatnie 3 miesiące a resztę przenosić do tabeli
wpisy_historia) ?Czy może w momencie gdy administrator zakłada konto tworzyć nową tabelę z nazwą firmy?
jakisPrefix_nazwaFirmya w niej dopiero powyższe kolumny? To sprawi że przy 30 różnych firmach będzie około ( 7 * 30 ) 210 tabel.
W obu przypadkach użytkownik musiałby podawać nazwę 'firmy' podczas logowania - inaczej nie będzie możliwości posiadania 2 użytkowników o takim samym loginie a zależy mi aby to zachować.
7500 wpisów to dla bazy danych bardzo mało danych. Gdyby tych danych było miliardy to wtedy mógłbyś zaczynać zastanawiać się nad wydajnością.
Musisz oczyswiście pamiętać o założeniu odpowiednich indeksów na pola. Przede wszystkim ważny będzie indeks na id_firmy, żeby szybko wybierać dane dla poszczególnej firmy.
@qwelukasz: Nie
Tabela
wpisyprzypuszczam że będzie wyglądać mniej więcej tak:1. Bazy danych mają typ reprezentujący datę, więc chyba lepiej używać go niż stringów.
2. Dla wpisów historycznych stworzyłbym osobną tabelę. W tym momencie żeby wyświetlić aktualne wpisy musisz dla każdego wpisu wybrać wpis z maksymalnym historyid. To powoduje konieczność użycia podzapytań, co znacząco wpływa na wydajność (to można obchodzić dodając pole trzymające informację, czy dany wiersz jest aktualny, ale mimo wszystko lepiej przenieść te dane do osobnej
Nawet jeśli nie używasz Doctrine i Symfony, to idea tam zastosowana jest IMHO słuszna (dodatkowa tabelka trzymająca historię danych). W ten sposób nie zaśmiecasz głównej tabelki starymi danymi (jest lżejsza) i takie rzeczy jak
idmogą być normalnie unique i autoincrement.Co do samych tabelek – use case! Jakie zapytania chcesz robić? Tzn najpierw musisz wiedzieć co chcesz robić, żeby móc to
@legolass: Czy w takim razie lepiej byłoby trzymać rowdate jako date w formacie
yyyy-mm-01i wyszukiwać dane gdzierow_date = '2015-04-01' niżrow_date = '2015-04'`?* dosyć często u nas dodaje się głosy (czyli jest ich dużo, kilkadziesiąt milionów)
* prawie nigdy się ich nie edytuje
* bardzo często chcę znać liczbę głosów dla głosowanej
* bardzo często dodaje się wpisy
* bardzo często się je edytuje
* muszę znać znać aktualne wartości dla danego miesiąca i firmy
* rzadko chciałbym wiedzieć kto naniósł zmiany
@qwelukasz: To już np podpowiada, że zdecydowanie warto wywalić archiwalne rekordy do oddzielnej tabeli – nie będą wtedy przeszkadzać w:
Bo szukać będę po pełnych miesiącach więc musiałbym dodatkowo sprawdzać ostatni dzień w miesiącu i jechać zakresami
rowDate
@qwelukasz: Ciężko powiedzieć, zaczynałem jeszcze przy Symfony 1, ale w sumie realnie zrobiłem jedną appkę na Symfony 2 i drugą od pół roku przenoszę pod S2 (portal postawiony na starożytnym Nuke'u :D).
Więc czy długo? Nie wiem, po prostu używam przelotnie – samego frameworka, nie aż tak długo, ale już np komponenty wsadzałem do innych frameworków i używam od kilku lat
I dopiero jak będziesz mieć taki „idealny zestaw tabel” – wtedy zastanów się, co będzie boleć i optymalizuj.
Np masz usera i
ok, dziekuje panowie. Dużo mi pomogliście i naprowadziliście mnie na właściwe tory rozumowania.
Zaplusowałem wszystkie wasze komentarze.
1. poprawnie jest trzymać
datetime2. ale jak dostaniesz po dupie z wydajnością, możesz np wyciągnąć drugą kolumnę trzymającą sam miesiąc
Ale póki nie masz realnego zastosowania – ciężko przewidzieć gdzie będziesz obrywać po dupie, czyli gdzie optymalizaować.