Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Jak powstają ilości w nawiasach przy tych parametrach?, Takie coś zajedzie każdy serwer, jak oni to robią w dużych serwisach
kukix
post 7.12.2011, 00:15:11
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.

Ostatnio zastanawiałem się nad budowa takich serwisów jak ceneo lub innych dużych serwisów..

Jak oni wyliczają dla każdego przypadku ilośc produktów dl;a danego parametru?

Proszę wejśc np na link: http://www.ceneo.pl/Telewizory_LCD;017P0-2...7331-277334.htm.

Na wyszukwiarce zaawansowanej są w nawiasach ilości produktów z danym parametrem. Ilośc ta zmienia się jak zaznaczymy jakiś parametr.
Jeżeli by dla każdej opcji wykonac obliczenie ile jest produktów dla takiedo przypadku, to trzeba by wykonac z 50 zapytań na takiej ogromnej bazie przy każdym wyświetleniu serwisu.


Jak oni to ogarniają?

Ktoś kiedyś spotkał się z takim mechanizmem?
Go to the top of the page
+Quote Post
johny_s
post 7.12.2011, 00:32:16
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


moga sobie przygotowac wczesniej takie dane i trzymac je w cache albo maja jakies specjalistyczne oprogramowanie. U nas w firmie mamy aplikacje w cepie napisana do takich rzeczy.
Go to the top of the page
+Quote Post
kukix
post 7.12.2011, 01:07:51
Post #3





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Cytat(johny_s @ 7.12.2011, 02:32:16 ) *
moga sobie przygotowac wczesniej takie dane i trzymac je w cache albo maja jakies specjalistyczne oprogramowanie. U nas w firmie mamy aplikacje w cepie napisana do takich rzeczy.

Tak, tylko, że przy 50 parametrach, jest to mase kombinacji.. wybranie np przekątnej 42 cale wpływa na wszystkie inne parametry..

A czy ta aplikacja przygotowuje wszystkie takie kombinacje parametrów i wstawia je do plików z tablicą?
Go to the top of the page
+Quote Post
Crozin
post 7.12.2011, 01:17:21
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Być może przy wyszukiwaniu pobierane są również informacje na temat atrybutów znalezionych produktów? Pobranie tego typu danych z nierelacyjnej bazy danych nie powinno być specjalnie obciążające - zresztą z relacyjnej również nie musiałoby być, nie wiem skąd wytrzasnąłeś 50 zapytań.

Ten post edytował Crozin 7.12.2011, 01:17:52
Go to the top of the page
+Quote Post
nospor
post 7.12.2011, 08:04:09
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja robiłem tego typu skrypt i nie robiłem tam 50 zapytań. Robiłem to jakiś czas temu i nie pamiętam dokładnie algorytmu, który zastosowałem.
Kojarzę natomiast, że liczba zapytań mogła być równa liczbe grup parametrów.
Czyli jeśli było 50 parametrów to np. mieściły się one w 5 grupach. Wówczas miałem 5 zapytań.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kukix
post 7.12.2011, 11:27:22
Post #6





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Cytat(Crozin @ 7.12.2011, 02:17:21 ) *
Być może przy wyszukiwaniu pobierane są również informacje na temat atrybutów znalezionych produktów? Pobranie tego typu danych z nierelacyjnej bazy danych nie powinno być specjalnie obciążające - zresztą z relacyjnej również nie musiałoby być, nie wiem skąd wytrzasnąłeś 50 zapytań.


50 zapytań, ponieważ trzeba dla każdego przypadku policzyć ile jest tych produktów.

Cytat(nospor @ 7.12.2011, 09:04:09 ) *
Ja robiłem tego typu skrypt i nie robiłem tam 50 zapytań. Robiłem to jakiś czas temu i nie pamiętam dokładnie algorytmu, który zastosowałem.
Kojarzę natomiast, że liczba zapytań mogła być równa liczbe grup parametrów.
Czyli jeśli było 50 parametrów to np. mieściły się one w 5 grupach. Wówczas miałem 5 zapytań.


Rzeczywiście zapytanie dla każdej grupy to już sporo mniej, ale podejrzewam jednak ,ze to zapytanie jest dosyć rozbudowane tak więc wydajnościowo niewiele lepiej. :/
Go to the top of the page
+Quote Post
nospor
post 7.12.2011, 11:31:14
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale podejrzewam jednak ,ze to zapytanie jest dosyć rozbudowane tak więc wydajnościowo niewiele lepiej. :/
Widzisz, tylko podejrzewasz... smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 7.12.2011, 11:48:05
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Zapytanie wcale nie musiałoby być jakieś strasznie skomplikowane. Załóżmy, że informacje o atrybutach / właściwościach produktu są przechowywane w jakimś tam modelu EAV, czyli że mamy tabelę z kolumnami: product_id, attribute_id, attribute_value_id.
Wyszukując produkty na podstawie kryterium: producent (atrybut): Sony (wartość), przekątna (atrybut): 42", 44" (wartości) musimy pobrać jedynie identyfikatory tych produktów, które w tabeli EAV-u spełniają te kryteria. Relacyjne bazy danych są całkiem dobrze przygotowane do obsługi tego typu zapytań.
Następnie mając już identyfikatory wszystkich znalezionych produktów, pobieramy je wraz z ich wszystkimi atrybutami (czy tam jedynie pewnymi atrybutami - ogólnymi (cena, producent) i powiązanymi z kategorią (przekątna ekranu, kontrast)). Teraz możemy łatwo zliczyć jaki atrybut, z jaką wartością wystąpił ile razy. Pobrane dane można bardzo łatwo zapisać w cache'u na poczet przyszłych wyszukiwań czy kolejnych stron wyników.

Jakoś bardzo obciążające to być wcale nie musi.

Ten post edytował Crozin 7.12.2011, 11:48:24
Go to the top of the page
+Quote Post

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: 15.07.2025 - 08:18