![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 18 Dołączył: 30.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam, nie wiem czy to dobre miejsce (dawno mnie tu nie było). Postaram się opisać problem jak najbardziej ogólnie:
Mamy dwa źródła danych (oba to SOAP REST API z różnych serwisów). Potrzebuję pobrać wynik wyszukiwania z obu systemów (docelowo może być ich więcej), scalić w jedną listę i wyświetlić w postaci posortowanego grida. Kombinuję na różne sposoby. Niestety cache danych dłuższy niż 5s jest totalnie za długi ze względu na dużą częstotliwość aktualizacji. Danych jest sporo dla jednego zapytania może być np 30 000 rekordów po 10 kolumn każdy. Sortowanie po liczbach rzeczywistych dodatnich (cena). To, tak ogólnie, jakieś pomysły co do algorytmu? Dodam że dane możemy pobierać w paczkach od 5 do 100 rekordów i przy każdym requeście mamy dostęp do liczby wszystkich rekordów. Obie serie danych są posortowane. Rozwiązanie na SQLlite tmp table i pliki wypada dość marnie. Im dalej dochodzi stronicowanie tym jest to wolniejsze. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Niestety cache danych dłuższy niż 5s jest totalnie za długi ze względu na dużą częstotliwość aktualizacji. Jakiś system giełdowy, czy co? O.o' Cytat Rozwiązanie na SQLlite tmp table i pliki wypada dość marnie. Im dalej dochodzi stronicowanie tym jest to wolniejsze. To zainteresuj się bazą trzymaną w pamięci RAM + kopia na HDD. Np. Redis. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 18 Dołączył: 30.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie chciałem sugerować. Chodzi o np połączenie danych ze świstaka z danymi z allegro. Jak wiadomo aukcje zwłaszcza pod koniec zmieniają się non stop. Albo przynajmniej znikają (allegro kup teraz). Możliwości odpytania jest tak wiele że cache niema większego sensu.
Jedyne co na razie przychodzi mi na myśl to wczytanie takich samych porcji danych (od 0 do $limit*$offset + $limit) , scalenie a na końcu obcięcie. Ew jakieś optymalizacje na początku i w trakcie scalania. Niestety im głębiej w las (dalsza podstrona) tym to będzie działać coraz wolniej, ze względu na coraz większą ilość requestów. Zapis do bazy w locie jest przyjemny, ale to po prostu dodatkowy krok: zrzut do bazy, pobierz co chcesz, cleanup) Na razie to rozważania czysto teoretyczne. Teraz to jest allegro/swistak, ale tak samo dobrze się sprawdzi przy pobieraniu danych z dwóch różnych źródeł dany (np dwa kanały RSS) i ich wyświetlanie. W tym ostatnim raczej tak często się nie zmienia i po prostu będzie opóźnienie. Plus to że jest więcej stałych. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:02 |