![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam, pracuje właśnie nad projektem sklepu internetowego. Opieram się tu o Symfony (Propel jako ORM). Mam dość skomplikowaną strukturę tabel z produktami, której raczej nie da się już uprościć - ogólnie instancja produktu tworzona jest z wielu tabel gdzie joiny są 2-3 stopniowe tj. tabela a join tabala b join tabela c itd. Ogólnie kluczowe zapytania są na tyle złożone, że mam do wyboru 2 opcje:
- stworzyć dodatkową tabelę z cachem produktów gdzie są dostępne wszystkie potrzebne pola - stworzyć widok Z perspektywy utrzymania tego kodu lepiej jest zrobić widok - nie będę musiał powielać operacji zapisu itd. Z drugiej strony cache ma ta przewagę, że jest szybszy w odczycie. No i tu pojawia się właśnie problem - na ile widok oparty na dość złożonym zapytaniu sql łączącym około 6-7 tabel i zawierającym około 20-25 pól będzie obciążeniem dla bazy. Czy taki widok jest cachowany w jakiś sposób czy raczej zapytanie jest wywoływane za każdym razem od nowa? Boję się, że widok przy większym obciążeniu może dać się we znaki. Macie z tym jakieś doświadczenia. pozdrawiam i z góry dzięki za pomoc |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Czytałem właśnie dzisiaj ten artykuł i trochę mnie źle nastroił ;-( Zwłaszcza, że optymalizacja BD nie jest moją silną stroną. Trochę się boję, że w pewnym momencie wszystko "padnie i nie wstanie" bo ogólnie struktura musi być elastyczna a zarazem dużo oferować przez co niektóre zapytania są dość złożone.
Ale chyba zrobię tak jak mówi mike - spróbuję oprzeć wszystko o widoki, wypełnię tabelę danymi docelowymi i zrobię testy. Jeśli pojawią się problemy to najwyżej przejdę na opcję z cachowaniem - stracę 2-3 dni a przynajmniej będę miał trochę doświadczeń. ActivePlayer - zastanawiałem się nad PG, ale trochę boję się tej bazy. Chyba pora kupić jakąś cegłę i usystematyzować trochę wiedzę ;-) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 20:51 |