Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Scalanie i sortowanie dwóch źródeł danych
Forum PHP.pl > Forum > PHP
zulus
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.
erix
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.
zulus
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.