Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Witam.
Mam takie pytanie związane z projektowaniem "sporych" aplikacji internetowych.
Leży przede mną projekt portalu informacyjnego. Szkopuł w tym, że jest on podzielony na kilka mniejszych portali. Przykładowo dla 'gościa' jest dostępny portal nr 1. Po zalogowaniu (jeśli ma odpowiednie uprawnienia) 'gość' przechodzi do kolejnego - portalu nr 2 - różniącego się m.in. layoutem, gdzie znajdzie spersonalizowane dane, inny rodzaj informacji, modułów, ponadto będzie mógł skorzystać z kolejnego formularza logowania/rejestracji i dostać się do portalu nr 3, różniącego się diametralnie od pozostałych.
Czy ktoś z Was realizował tego typu projekt? W tym przypadku postawić na modułową budowę i zaprząc do pracy tylko jedną bazę danych, zamknąć wszystko w jedną aplikację (frontend/backend), czy utworzyć odrębne 3 bazy danych i podzielić projekt na 3 różne aplikacje? Jak będzie wydajniej, sprawniej, łatwiej? Dodam, że w bazie danych będą przechowywane informacje dla 70 tys. użytkowników, ponadto struktura bazy dla każdego portalu będzie bardzo podobna. Dziękuję z góry za wszelkie sugestie.
29.12.2011, 19:08

Łukasz Fiłyk Programista PHP,
Wydawnictwo Forum

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Myślę że nikt Ci nie udzieli jednoznacznej odpowiedzi jeśli nie będzie znał sporej ilości szczegółów. Musisz sam przemyśleć co będzie Ci łatwiej zrobić i co będzie miała większe możliwości rozwoju. Trzeba sobie zadać kilkanaście pytań, rozpisać "za" i "przeciw" i wtedy można przesądzić.

Kilka wątków do przemyślenia:
1. Dlaczego chcę zrobić to na 3 bazach? Jakie da mi to możliwości (separacja danych) a jakie problemy (dostęp do wspólnych zasobów) Cza każda baza danych będzie mogła samodzielnie istnieć? Jeśli nie to ja bym to wrzucił do jednej bazy bo w przyszłości jeśli ktoś będzie przeglądał jedną baza może nie zauważyć, że coś jest w innej.
2. Czy planujesz CMS do portalu, jeden wspólny lub kilka?
3. Jaki procent funkcjonalności jest taki sam lub różny, może tylko wygląd? Jeśli funkcjonalności są różne to bym oprogramował kilka "app" - ów, jeśli wygląd to operowałbym na różnych templatach do akcji i layout - cie.
4. W jaki sposób będzie przebiegało przenoszeni "zalogowanych" pomiędzy portalami oraz rozróżnianie jaki to portal.

Robiłem podobną rzecz, moje techniczne główne węzły to były:

1. W plikach konfiguracyjnych (ewentualnie baza) trzymałem nazwę portalu, nazwę domeny oraz nazwę "template"
2. Dodałem własny filtr który rozpoznawał domene, wyciągał nazwę templaty i ustawiał jeśli znalazł taki właśnie layout. Dodawał plik CSS i JS o nazwie template.css/js Następnie przeszukiwał odpowiedni katalog 'template" w katalogach CSS i JS i dołączał pliki.
3. Filtr zmieniał dla danej akcji (jeśli znalazł) renderowany plik actionSuccess.php z przedrostkiem o nazwie "templaty"
4. Dodałem własną obsługę partialu aby móc używać lekko zmodyfikowanych partiali
5. Cache na domenie włączone

To jest opcja na jednej "app" do frontendu.

Powodzenia.
30.12.2011, 12:37

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

a ja bym stworzył 3 aplikacje i jedną aplikację dla backendu. Dzięki temu będzie porzadek w kodzie i logiczne odseparowanie poszczególnych stron.

3 bazy to nie jest dobry pomysł lepiej zrobić to na jednej bazie danych ale tabele nazywać wg jakiegoś schematu np. app1_blog app2_cos_tam. Możesz dawać podwójne __ dzieki temu bedziesz mógł sobie ładnie zwijać podobne bazy w phpmyadminie.

70 tysiecy to nie jest duża baza pracowałem na bazie liczącej koło miliona rekordów. Przy większych bazach musisz uważać na wszystkiego rodzaju symfonowe filtry i formularze mające pole select. One potrafia do selecta zaciągnąć te 70 tysiecy userów by móc wybrac jednego, powoduje to przepełnienie pamięci i crush.

Warto tez odświeżyć też propela i zainstalować nowy plugin do niego i przejść na propela 1.6.3

powodzenia
4.01.2012, 13:38

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Dziekuje za zainteresowanie tematem, waham sie jeszcze nad implementacja pewnych rozwiazan w swoim projekcie, ale na dniach podejme ostateczna decyzje. Co do ORM - uzywam Doctrine 1.2. Pozdrawiam.
4.01.2012, 14:00

Krzysztof N. Project Manager.
Aplikacje www. PHP,
Symfony, Zend.

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Krzysztof Biernacki:
Mam takie pytanie związane z projektowaniem "sporych" aplikacji internetowych.
Leży przede mną projekt portalu informacyjnego. Szkopuł w tym, że jest on podzielony na kilka mniejszych portali. Przykładowo dla 'gościa' jest dostępny portal nr 1. Po zalogowaniu (jeśli ma odpowiednie uprawnienia) 'gość' przechodzi do kolejnego - portalu nr 2 - różniącego się m.in. layoutem, gdzie znajdzie spersonalizowane dane, inny rodzaj informacji, modułów, ponadto będzie mógł skorzystać z kolejnego formularza logowania/rejestracji i dostać się do portalu nr 3, różniącego się diametralnie od pozostałych.
Czy ktoś z Was realizował tego typu projekt? W tym przypadku postawić na modułową budowę i zaprząc do pracy tylko jedną bazę danych, zamknąć wszystko w jedną aplikację (frontend/backend), czy utworzyć odrębne 3 bazy danych i podzielić projekt na 3 różne aplikacje? Jak będzie wydajniej, sprawniej, łatwiej? Dodam, że w bazie danych będą przechowywane informacje dla 70 tys. użytkowników, ponadto struktura bazy dla każdego portalu będzie bardzo podobna.
A może Symfony 2.0? Przy okazji zapraszam do grupy poświęconej tejże wersji frameworka: Symfony 2.0 :)
5.01.2012, 10:22

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Mam jeszcze takie pytanie - czy to dobry pomysł, aby odseparować profile użytkowników i ich uprawnienia, grupy do których należą (osobna baza danych) od pozostałej struktury bazy danych (informacje o artykułach, modułach etc.)? Pytam, gdyż jest odgórny nacisk, aby wszelkie informacje związane z użytkownikami były przechowywane w bazie danych znajdującej się na zewnętrznym serwerze i nie za bardzo wiem w jaki sposób to zrealizować (dotychczas korzystałem z pluginu sfDoctrineGuard w obrębie jednej bazy danych). Liczę po cichu na jakieś sugestie i porady.
18.01.2012, 19:11

Krzysztof N. Project Manager.
Aplikacje www. PHP,
Symfony, Zend.

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Krzysztof Biernacki:
jest odgórny nacisk, aby wszelkie informacje związane z użytkownikami były przechowywane w bazie danych znajdującej się na zewnętrznym serwerze
Skąd taki "wspaniały" pomysł?
18.01.2012, 21:29

Krzysztof Biernacki programista PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

"Wspaniały" pomysł powstał przy przypływie weny twórczej szefostwa. Jest kładziony nacisk na integrację portali informacyjnych z innymi aplikacjami internetowymi, które będą wykorzystywały tą samą bazę danych użytkowników. Jeśli chodzi o mnie, czarno to widzę. Ktoś z Was wykonywał tego typu zabiegi? Czy mechanizmy frameworka (Symfony 1.4) pozwolą na "umiarkowaną gimnastykę" w postaci zarządzania kontami użytkowników, ich uprawnieniami w zewnętrznej bazie danych?
19.01.2012, 08:20

Grzegorz Śliwiński Programista
python/PHP

Temat: [sf 1.4] Projekt 'sporej' aplikacji internetowej - jak...

Hmmm... jest to jakaś forma rozpraszania bazy danych, co by nie było... natomiast jeśli już taka integracja miała by mieć miejsce, powinno się zrobić jakieś api i przez to api komunikować. Wtedy trzymasz szkielet, podstawowe informacje, nawet jeśli same id u siebie w aplikacji i odwołujesz się po informacje usera do api. A te mechanizmy będziesz musiał modyfikować jakoś, chyba, że rozproszenie nie będzie widoczne z poziomu aplikacji (np. może sama baza załatwi odpytanie drugiej o użytkownika?).
19.01.2012, 18:26



Wyślij zaproszenie do