![]() |
![]() ![]() |
![]() |
![]()
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? |
|
|
![]()
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.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław 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. 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ą? |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław 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ń. 50 zapytań, ponieważ trzeba dla każdego przypadku policzyć ile jest tych produktów. 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. :/ |
|
|
![]()
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... ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.07.2025 - 08:18 |