![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 14 Dołączył: 25.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Tworzę właśnie system e-learningowy, przeznaczony docelowo dla około 10 tys. użytkowników, z których każdego proces nauki składać się będzie z 10 lub 20 tys. rekordów w bazie danych. W rezultacie daje to niezwykle dużą liczbę rekordów - minimum 100 milionów (o łącznej wadze około 3GB). Domyślam się, że stworzenie jednej tabeli i umieszczenie tam wszystkich rekordów nie jest najlepszym pomysłem, chyba, że się mylę? Proszę o jakąś radę... Czy dobrym rozwiązaniem byłoby przydzielenie każdemu użytkownikowi osobnej tabeli w jednej bazie? Czy będzie trzeba być przygotowanym na obsługę kilku baz danych? Serwer, na którym będzie pracować strona ma 4 procesory po 1,6 GHz i 8192 MB ramu - czy to wystarczy? Przyznam się, że nie mam doświadczenia w obsłudze tak dużej bazy danych, więc bardzo proszę o porady i jakies sugestie, jak najlepiej zorganizować strukturę takiej bazy. Ten post edytował lukesh 27.04.2008, 19:43:02 -------------------- Edumemo.pl - Nauka Języków Obcych
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 12 Dołączył: 23.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety taki opis nam nic nie mówi ponieważ nie wiemy jaka jest struktura bazy danych, jakie rekordy będą w niej trzymane, jakie operacje będą najczęściej wykonywane. Na takie pytania musisz sobie odpowiedzieć przed projektowaniem bazy danych.
Najważniejsze, ale o tym przypominać chyba nie muszę to indeksy. -------------------- ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 14 Dołączył: 25.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przykładowy rekord w bazie danych będzie wyglądał następująco:
|-id----|-id_user|id_jedn|-nr|-data------| |13231 | 14231 | 10004 | 5 |2009-03-21 | |---------------------------------------| ... i to razy 100 milionów... ^^ :-) -------------------- Edumemo.pl - Nauka Języków Obcych
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 79 Pomógł: 12 Dołączył: 23.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie spokojnie, większych problemów nie będzie. Trudno tak operować pomysłami na operowanie na dużej bazie danych bo tutaj jest pełno szczegółów które mogą zaważyć.
Domyślam się że będą tutaj jakieś operacje na wyciąganiu aktualnych kursów, dlatego zdublowałbym dane. Czyli wszystko trafia do standardowych tabel, a dodatkowo dane z aktualnego miesiąca są dostępne w tabeli typu MEMORY. -------------------- ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 398 Pomógł: 10 Dołączył: 24.11.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej zrobic baze wedlug zalozen teorii baz danych i normalizacji ... bez zbednego kombinowania i tworzenia rzeczy niestandardowych.
Pamietaj zeby uzyc wlasciwych typow pol i odpowiednio pozakladac indeksy i relacje to juz przyspieszy dzialanie. Jezeli cos zacznie sie ciac to zacznij sie zastanawiac ktore dane mozna keszowac i jak ... czy w plikach czy memcached, a jezeli to nie pomoze to rozloz baze na klastry. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 10:47 |