Jedna, czy wiele tabel? Potrzebna rada.

Odpowiedz Nowy wątek
2006-11-13 17:18
hoper
0

Witam

Problem jest następujący: Program: komunikator. Rozmowy będą obsługiwane przez jeden centralny serwer. Zamysł jest taki, żeby archiwum rozmów przechowywać właśnie na serwerze w bazie danych, a więc na przykład w tabeli. Moje pytanie jest takie: czy szybszym, wydajniejszym, pochłaniającym mniejsze ilości zasobów serwera i bezpieczniejszym rozwiązaniem będzie użycie jednej tabeli dla wszystkich użytkowników (max. 30), czy też stworzenie dla każdego usera osobnej tabeli, przechowującej tylko jego rozmowy?

Pozdrawiam

Pozostało 580 znaków

2006-11-13 17:35
0

Hmmm... Archiwum rozmów na serwerze? Permanentna inwigilacja :).

A tak poważnie - jeśli już chcesz to zapisywać w bazie danych, to tylko w jednej tabeli! Rozwiązanie z wieloma tabelami może i byłoby (ale nawet jeśli, to chyba w minimalnym stopniu) szybsze, ale bardzo nieeleganckie i kompletnie nieskalowalne. Dodatkowo - nieoptymalne, bo przecież każdą wiadomość musiałbyś przechowywać 2 razy (w tabeli odbiorcy i nadawcy).

Ja to sobie wyobrażam jako tablicę w postaci:

[NADAWCA] [ODBIORCA] [KOMUNIKAT] [CZAS]


Staram się jak mogę. A jak nie mogę, to też się staram.

Pozostało 580 znaków

2006-11-13 19:08
0

a wyobrazasz sobie ile czasu bedzie zajmować przetwarzanie pojedynczych komunikatów lub poprostu ile bedzie rekordów w bazie? (nawet przy małej liczbie uzytkowników komunikatora?)

Jesli już to najlepiej zapisywać całość pojedynczej rozmowy w nowym rekordzie. Najlepiej jednak byłoby zrobić zapis na plikach - bedziesz wtedy tylko ograniczony ilością miejsca na dysku a nie jeszcze wydajnością serwera, który bedzie musiał obsłużyc baze

Pozostało 580 znaków

2006-11-13 20:01
0

Ja to sobie wyobrażam jako tablicę w postaci:

[NADAWCA] [ODBIORCA] [KOMUNIKAT] [CZAS]

i np. jeszcze jedno pole [ODCZYTANE] ustawiane na 1 lub 0 - bo przecież odbiorca może mieć wyłączony komunikator... Czyli wiadomości mogą czekać na odebranie.

Oczywiście można kombinować dalej ;)


Pozostało 580 znaków

2006-11-14 02:15
0
SebaZ napisał(a)

a wyobrazasz sobie ile czasu bedzie zajmować przetwarzanie pojedynczych komunikatów lub poprostu ile bedzie rekordów w bazie? (nawet przy małej liczbie uzytkowników komunikatora?)
Jesli już to najlepiej zapisywać całość pojedynczej rozmowy w nowym rekordzie. Najlepiej jednak byłoby zrobić zapis na plikach - bedziesz wtedy tylko ograniczony ilością miejsca na dysku a nie jeszcze wydajnością serwera, który bedzie musiał obsłużyc baze

jeśli chodzi o wyszukiwanie to na plikach będzie wolniej a już na pewno bardziej skomplikowanie. Poza tym jeśli ktoś się decyduje na coś takiego to zdaje sobie sprawę, że nie będzie to 10MB na rok. No i jeśli chodzi o bazę to nawet jakiś Celeron 1GHz i 256MB ramu spokojnie pociągnie coś takiego - w końu przy archiwum (podkreślam archiwum) szybkość na poziomie 0,1s nie jest wymagana

a co do głównego pytania to pomysły z osobną tabelą dla każdego usera prędzej czy później się mszczą


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-14 09:48
0

no dobra masz rację. W mojej wypowiedzi chciałem powiedzieć, że lepiej zapisywać w pojedynczych rekordach całe rozmowy, nie tylko pojedyncze wiadomosci. No ale pisząc zboczyłęm z toru :P

Pozostało 580 znaków

2006-11-14 11:36
0

Taka jedna, mala uwaga do tematu, ktos tu wspomnial o plikach, bo to odciazy serwer bazy - rozumowanie troche bledne, przeciez plik nie jest jakas tam abstrakcja z nieba wzeta, zeby dokonac jakiejs operacji na pliku, obciaza sie system plikow, ktory przeciez tez ma co robic, powiedzmy, ze mamy kilka k plikow w jakims folderze i chcemy otworzyc jeden z nich (/katalog/plik.txt), jesli mamy do dyspozycji jakis stary system plikow (bez zadnych indeksow, bez niczego) to otwarcie takiego pliku moze troche zajac.

Niby baza tez korzysta z plikow, ale baza z reguly tworzy ich malo (jakby to bylo takie proste to moznaby zapisywac pliki pod nazwa jakiegos id czy na co mamy tam index zalozony).


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot