Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> Forum internetowe heavy-duty, temat pracy inzynierskiej - zalozenia
ergo
post 17.12.2005, 01:08:09
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


Witam,

Potrzebuje waszego wsparcia w sformulowaniu zalozen projektu o nazwie " Forum internetowe zoptymalizowane pod duza ilosc wpisow".

Po wstepnej wymianie maili ( z zalozeniami pracy ) z moim promotorem wyszlo ze albo moj sposob myslenia jest zly i czegos nie rozumiem , albo on nie wie co pisze ;-).

Dlatego tez prosilbym was o pomoc w tej materii, bo grudzien juz za 3 miechy obrona a ja nie zaczalem jeszcze ;-).

Ze wstepnej rozmowy wynika ze system ma dzialac w miare niezaleznie od bazy danych wiec mysle o uzyciu adodb.

dalej chcialem zeby forum standardowo pobieralo posty z tygodnia takie rozwiazanie jest bodajrze w vbulletin.

Mysle tez zeby starac sie ograniczyc z iloscia zapytan sql do 5 lub mniej na strone ( jesli sie da ).

myslalem tez zeby wszystkie dane pobierac w ORDER BY DESC oraz zeby nie wykorzystywac zapytan pytu SELECT COUNT tylko pobierac dane z odpowiednich pol opisu danych forow ( np. ilosc tematow itp ).

ale do tych postulatow odniosl sie cokolwiek dziwnie...

bylbym wdzieczny za wszelkie sugestie, forum nie musi miec systemu templatow i bajerow. ma dzialac tylko sprawnie , stabilinie i szybko, przy duzym obciazeniu.

Bede wdzieczny za wszelkie sugesitie.
pozdrawiam


--------------------
Go to the top of the page
+Quote Post
Vengeance
post 17.12.2005, 12:14:34
Post #2





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


"Ze wstepnej rozmowy wynika ze system ma dzialac w miare niezaleznie od bazy danych wiec mysle o uzyciu adodb"

Samo AdoDB ci tego nie zapewni. Musisz pamiętać że składnia SQL dla różnych baz jest odmienna. Dlatego pamiętaj by zgromadzić w jednym miejscu wszelkie zapytania. Wtedy tworzysz taki plik dla różnych wersji baz, a adodb służy tylko do uwpólnienia procesu łączenia się z bazą i wysyłania zapytań.


--------------------
Go to the top of the page
+Quote Post
sobstel
post 17.12.2005, 12:33:28
Post #3





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(Vengeance @ 2005-12-17 12:14:34)
Samo AdoDB ci tego nie zapewni.

zapewni jesli bedzies sie trzymal odpowiedniej skladni, a nie wrzucal do query zapytania jak lecą


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
FiDO
post 17.12.2005, 13:21:02
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Tylko, ze niektore rzeczy nie maja uniwersalnej skladni.
Wezmy np. przeszukiwanie typu Full-text Search. Jak chcesz to zapisac tak, zeby dzialalo na roznych RDBMS ?
IPB stosuje w tym celu cos podobnego jak podal Vengeance. Maja swoja klase do budowania zapytan i wszystkie proste zapytania sa przez nia generowane odpowiednio pod zainstalowana baze. A zapytania, ktore moga wymagac rzeczy specyficznych dla danej bazy sa trzymane w osobnym pliku.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
halfik
post 17.12.2005, 16:13:40
Post #5





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


ano pomysl z klasa do budowania zapytan nie jest taki zly. jesli to dobrze zrobic bedzie to ciekawe rozwiazanie.

a co do obciazenia bazy. jesli to ma lazic na kazdej bazie, to jest problem. bo taki mysql nie ma podzapytac co by ciut pomoglo. wiec musisz jechac na podstawowej skladni sqla i wywalac spora ilosc zapytan przy kazdym zadaniu. w miare mozliwosci musisz ograniczyc ilosc zapytan i tyle, nic wiecej sie nie da.

inna rzecza jest ze jak to odpalisz na mysql to przy 300-400k wpisach na tabeli mysql umiera (z tego co kiedys testowalem czasy odpowiedzi beda w granicach 3min), posgresql jeszcze spokojnie pociagnie, a oracle pewnie tym bardziej chociaz tego ostatniego obstawiam w ciemno.

no a zeby zmniejszyc ilosc zapytan trzeba zrobic czyste forum bez bajerow. powywalac avatary, emoty i inne cuda jak ilosc ludzi na danym forum itd.

ja bym do sprawy podzszedl od innej strony. od baz danych. bo to jest slaby pkt tego problemu. nawet majac mysqla 3.x - mozna walnac ze 2-N serwerow z replikacjami bazy, a skrypty forum rownomiernie obciazaja baze. najprostrzy sposob? masz w pliku namiary na all bazy i zwyczajnie losuj - tutaj juz prawodpodobienstwo.

tyle ze nie mam zielonego pojecia jakby to wygladalo. zgaduje ze to jednak nie za dobry pomysl, bo na forum przy duzym obciazeniu co chwila cos sie zmienia i praktycznie co chcila trzeba by slac z master bazy do slavow zmiany. moze i by tu fungowalo, a moze nie. nie mam pojecia jak w przypadku forum by to wyglodalo. trzeba by testy przeprowadzic winksmiley.jpg


--------------------


"Nie wiedziałem tylko, że Bóg też był na grzybach, gdy majstrował przy wszechświecie" (Janusz Wisniewski)
dev: gazeta.ie
Go to the top of the page
+Quote Post
Sh4dow
post 17.12.2005, 18:34:40
Post #6





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Cytat(halfik @ 2005-12-17 17:13:40)
...

inna rzecza jest ze jak to odpalisz na mysql to przy 300-400k wpisach na tabeli mysql umiera (z tego co kiedys testowalem czasy odpowiedzi beda w granicach 3min), posgresql jeszcze spokojnie pociagnie, a oracle pewnie tym bardziej chociaz tego ostatniego obstawiam w ciemno. ...

z ta przesada ze mysql umiera przy 3 milionach rekordow to bym nie byl taki pewien.
Rozumiem ze tablica nie bedzie wygladac jak pas startowy szeroka, w pojedynczym rekodzie bedziesz mial okolo 30 kolumn.
Dobra konstrukcja potrafi naprawde wiele, ja aktualnie w mysqlu mam ponad 8 milionow rekordow z czego jedna tablica ma ich wlasnie okolo 3 milionow i nie moge powiedziec zeby stronka nam chodzila kiepsko, a wejsc mamy srednio okolo 80tys unikalnych.

To tak tylko wzgledem mysql'a Rkingsmiley.png


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Ludvik
post 17.12.2005, 19:09:19
Post #7





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Tak rozmawiacie o bazach danych, ale nikt nie wspomniał o tym, że adodb jest wolne... Chcesz niezależność od bazy i szybkość, to zastanów się nad PDO, które jako rozszerzenie pecl zainstalujesz pod php5, a w php5.1 jest włączone do dystrybucji... Jako szablonów spokojnie możesz użyć samego php - jeżeli forum nie będzie skomplikowane to się sprawdzi...

Pamiętaj o wszelkiego rodzaju cache.

Na bazach się specjalnie nie znam, więc nie będę się włączał do dyskusji.


--------------------
Go to the top of the page
+Quote Post
bregovic
post 17.12.2005, 19:21:00
Post #8





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Może się też opłacić ewntualne cache'owanie wyników bardziej skomplikowanych zapytań z bazy do plików. Jeśli ustawisz czas życia takiego pliku na powiedzmy minute lub dwie, to forum wciąż będzie funkcjonalne, a będzie mniej zapytań.


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
ergo
post 17.12.2005, 20:33:24
Post #9





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


Cytat(bregovic @ 2005-12-17 18:21:00)
Może się też opłacić ewntualne cache'owanie wyników bardziej skomplikowanych zapytań z bazy do plików. Jeśli ustawisz czas życia takiego pliku na powiedzmy minute lub dwie, to forum wciąż będzie funkcjonalne, a będzie mniej zapytań.

ja wiem.... co by mialo byc cacheowane ? dla mnie jedyna rzecza jaka moze byc cacheowana to takie malo wazne rzeczy jak urodziny uzytkownikow, ich liczba i statystyki, danych tematow i postow bym sie bal ruszac bo to po prostu nie sprawdzi sie przy duzej ogladalnosci tak mi sie zdaje.
co do zapytan dzialajacych na roznych bazach danych to mysle zeby zrobic cos takiego jak w stylu phpbb jest ze masz skladnie case: i tam sobie wybiera zapytanie wzorujac sie na tym co jest zdefiniowane w configu - jesli cos nie chce dzialac od razu... w zasadzie podejrzewam ze rozwiazanie jest podobne do tego zastosowanego w IPB tylko inaczej zaimplementowane.

Najwiekszym problemem dla mnie bedzie dzialanie bazy danych przy duzej ilosci rekordow i nie wiem jak to rozwiazac, mysle ze niezlym rozwiazaniem przy bazie powyzej 500 mb ( zalozmy ) bylo by tworzenie pojednynczej tabeli dla kazdego z forow.. co o tym myslicie ? przy wiekszej ilosci oddzielnych plkow z danymi taki dysk twardy traci mniej czasu na wyszukiwanie odpowiednich danych, niz wyszukanie fragmentu jednego pliku.

Ten post edytował ergo 17.12.2005, 20:54:43


--------------------
Go to the top of the page
+Quote Post
Ludvik
post 17.12.2005, 20:58:22
Post #10





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Jeżeli sądzisz, że cache nic nie da to jesteś w błędzie... Akurat przy dużych stronach cache jest zbawieniem. Tak jak mówi bregovic, zamiast ciągle wysyłać zapytania do bazy można zapisywać na dysku najczęściej pobierane dane w przystępniejszej postaci.

Rozwiązanie z wieloma tabelami nie wygląda za dobrze. Cache jest lepszym pomysłem - w taki sposób znacząco odciążasz bazę danych.


--------------------
Go to the top of the page
+Quote Post
ergo
post 17.12.2005, 21:05:08
Post #11





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


odciaza owszem, ale nie w momencie kiedy dane maja sie dynamicznie zmieniac co chwile chyba, to jest dobre jak masz np. strone glowna z newsami i ci ktos dodaje newsa co godzine... przynajmniej tak mi sie wydawalo ze wtedy jest sens cacheowania.
Pozatym co sie stanie jesli jedna osoba odpowie w temacie a nastepna wejdzie sekunde pozniej i tez odpowie ? ta druga osoba nie zobaczy tego jednego posta i wtedy dany temat traci spojnosc.... jest zbyt duze prawdopodobnienstwo ze cos pojdzie nie tak przy takim podejsciu - pozatym jak rozwiazac problem uprawnien w takim przypadku ? to wszystko zmienia sie przeciez co chwile , sa rozne grupy , kazda ma inne uprawnienia do tematow i for, to wszystko trzeba brac pod uwage, pozatym nie wiem jak to by sie mialo do zajmowania miejsca na dysku przy duzej bazie i duzej ilosci osob na raz... wtedy nie jestem wcale pewien czy obciazenie nie bylo by mniejsze.


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 17.12.2005, 21:12:10
Post #12





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
jak to by sie mialo do zajmowania miejsca na dysku przy duzej bazi

Zawsze istnieje zaleznosc
ilosc zajmowanej pamieci * szybkosc = const

Cytat
Pozatym co sie stanie jesli jedna osoba odpowie w temacie a nastepna wejdzie sekunde pozniej i tez odpowie ?

Po dodaniu odpowiedzi usuwasz cache z tematem. Przy otworzeniu strony z tym tematem tworzysz cache i wyswietlasz strone. Przeciez samych obejrzen stron jest z 10 razy wiecej nioz odpowiedzi.

np.

Przyczepiony: Najlepszy według was edytor do php! | 457 | 27 129 - ok 59 razy wiecej
Forum internetowe heavy-duty | 10 | 153 - ok. 15 razy wiecej

wiec jest to oplacalne.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Ludvik
post 17.12.2005, 21:12:18
Post #13





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W momencie modyfikacji danych czyścisz fragment cache, który został zmodyfikowany i tworzysz (albo nie) je od nowa z bazy. To czy będzie się opłacało zastosować cache trzeba sprawdzić, ale skoro na forum pojawia się dużo nowych wpisów, to operacji odczytu będzie dużo więcej...

Uprawnienia nie sa problemem, bo nie musisz zachowywać całego wyjścia. Jeżeli chcesz nadawać uprawnienia do wszystkich tematów osobno (co jest według mnie bez sensu) to musisz zapisać je w cache. Dużo miejsca chyba nie poświęcisz na to...

Co z miejscem na dysku? Nad tym trzeba chwilę pomyśleć, ale można spokojnie ograniczyć zużycie wywalając najrzadziej czytane wpisy z cache a przechowując najważniejsze. Limity można ustawić na sztywno.


--------------------
Go to the top of the page
+Quote Post
ergo
post 17.12.2005, 21:28:37
Post #14





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


Cytat(Ludvik @ 2005-12-17 20:12:18)
W momencie modyfikacji danych czyścisz fragment cache, który został zmodyfikowany i tworzysz (albo nie) je od nowa z bazy. To czy będzie się opłacało zastosować cache trzeba sprawdzić, ale skoro na forum pojawia się dużo nowych wpisów, to operacji odczytu będzie dużo więcej...

Uprawnienia nie sa problemem, bo nie musisz zachowywać całego wyjścia. Jeżeli chcesz nadawać uprawnienia do wszystkich tematów osobno (co jest według mnie bez sensu) to musisz zapisać je w cache. Dużo miejsca chyba nie poświęcisz na to...

Co z miejscem na dysku? Nad tym trzeba chwilę pomyśleć, ale można spokojnie ograniczyć zużycie wywalając najrzadziej czytane wpisy z cache a przechowując najważniejsze. Limity można ustawić na sztywno.

uprawnienia byly by dawane do grup a grupy przypisywane do gorum , taki uklad jest chyba najpopularniejszy czyli sie sprawdza.

co do miejsca na dysku to mysle ze moglbym zrobic skrypt wywolywany co np . 30 min ktory by kasowal wszystkie pliki cache - wtedy dysku nie zaleje fala cacheowanych plikow...

no ale ok : mozemy zalozyc ze jest jeden punkt w zalozeniach projektu:
Cacheowanie danych

to teraz jeszcze pytanie co zrobic w sytacji kiedy 1 uzytkownik wchodzi na strone glowna i ma np uprawnienia tak ustawione ze widzi 10 for ,a drugi widzi tylko 5, trzeba by oddzielny cache dla kazdego id usera robic ( mzoe plote glupoty ale nie robilem nigdy cacheowania sql wiec sie nie orientuje za dobrze - czytalem tylko ze nie sprawdza sie to w stronach gdzie czesto dynamicznie sie zmieniaja dane ), nie wiem czy w takiej sytacji cacheowanie nie bierze w leb przynajmniej w widokach spisu forow ?


--------------------
Go to the top of the page
+Quote Post
Ludvik
post 17.12.2005, 21:34:38
Post #15





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie wiem czy cache przy wyświetlaniu listy for się przyda, chociaż to zawsze kilka zapytań mniej. Możesz utworzyć obiekt-kontener wszystkich for i trzymać dla każdego forum listę wymaganych ról od razu w cache. Uprawnienia użytkownika trzymasz w sesji.

Oczywiście nie możesz trzymać w cache danych osobistych użytkownika, bo wtedy każdy miałby swoje cache, a nie o to chodzi. Częściej potrzebne dane konkretnego użytkownika trzymasz w sesji.


--------------------
Go to the top of the page
+Quote Post
bregovic
post 17.12.2005, 21:35:34
Post #16





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Masz dwie możliwości. Albo zapisujesz całe wyniki z bazy w tablicy - a działania logiczne robisz już w php. Albo robisz różne cache dla różnych grup. Osobbiście wolałbym opcję pierwszą...


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
ergo
post 17.12.2005, 21:40:51
Post #17





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


no dobrze jeszcze bym chcial by ktos sie do tego cacheowania ustosunkowal z uzytkownikow, ale jeden punkt mamy , macie jeszcze jakies pomysly na optymalizacje tego wszystkiego ? (ja myslalem o takich sprawach jak InnoDB z mysql ale to bylo przed tym jak sie okazalo ze system ma pracowac na roznych typach baz :/ ) bo na prace inzynierska to chyba troche malo tongue.gif chociaz implementacja tego mechanizmu chyba nie bedzie taka prosta :/ a ja z php tak srednio stoje ( nie pytac czemu sobie taki temat wzialem tongue.gif )


--------------------
Go to the top of the page
+Quote Post
Ludvik
post 17.12.2005, 21:51:38
Post #18





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Jeżeli masz zająć się również optymalizacją oprogramowania serwera, to na pewno musisz przemyśleć wewnętrzne cache php. Cache kodu pośredniego przy dużej liczbie wywołań skryptu jest jedną z najlepszych optymalizacji. Unikasz parsowania kodu za każdym razem, zamiast tego trzymasz już kod maszyny zenda w pamięci. Poszukaj czegoś googlarką "php cache".

Tak czy innaczej najważniejszy będzie dobry projekt. Optymalizacje zawsze można przeprowadzić, ale złego projektu nie poprawisz. Więc najpierw pożądnie pomyśl nad strukturą bazy, budową samego skryptu, a potem weź się za przyspieszanie.


--------------------
Go to the top of the page
+Quote Post
ergo
post 17.12.2005, 22:00:25
Post #19





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


nie od strony serwera , nic nie mam robic, sam program... tylko zastanawia mnie jedna rzecz, ze np. ani IPB, ani Vbulletin ani phpBB nie uzywa rozbudowanego cacheowania sql ( o ile w ogole uzywa - w moim forum phpBB raptem 1 zapytanie jest chachowane wynik sql )
mysle ze gdyby to sie sprawdzalo w aplikacj tego typu to by dawno to bylo zaimplementowane, ale moze sie myle...

Ten post edytował ergo 17.12.2005, 22:15:47


--------------------
Go to the top of the page
+Quote Post
bregovic
post 17.12.2005, 22:44:02
Post #20





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

Ostrzeżenie: (0%)
-----


Bo generalnie cacheowanie sql nie jest potrzebne - sam zażuciłeś że ma być heavy-duty. Ztymże jak ma być na prawdę heavy-duty, to IMO trzeba optymalizować serwer i pisać pod konkretną bazę danych, wykorzystywać max możliwości. Połączenie kompatybilności i heavy-duty to bardzo trudna sprawa.


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 12:03