Moja aplikacja internetowa zawiera dane zebrane z zewnętrznego interfejsu API, którego nie kontroluję. Ograniczam się do około 20 000 żądań interfejsu API na godzinę. Mam około 250 000 pozycji w mojej bazie danych. Każdy z tych elementów jest zasadniczo wersją buforowaną. Weź pod uwagę, że potrzeba 1 żądania aktualizacji pamięci podręcznej o 1 pozycji. Oczywiście w tych okolicznościach nie jest możliwe posiadanie doskonale aktualnej pamięci podręcznej. Więc, co należy wziąć pod uwagę przy opracowywaniu strategii buforowania danych. Są to rzeczy, które przychodzą na myśl, ale mam nadzieję, że ktoś ma dobre pomysły, o których nie myślałem.Strategia buforowania usługi zdalnej; co powinienem wziąć pod uwagę?
- czas ponieważ pozycja została stworzona (mniej czasu oznacza ważniejszą)
- liczbę „lubi” konkretny przedmiot (może oznaczać większe prawdopodobieństwo oglądanego)
- czasu od ostatniej zaktualizowanej
Jeszcze kilka szczegółów: przedmiotem są zdjęcia. Każde zdjęcie należy do wydarzenia. Zdarzenia, które obecnie występują, są bardziej podobne do klientów (dlatego powinny mieć priorytet). Chociaż mam teraz tylko 250 000 pozycji w bazie danych, liczba ta rośnie dość szybko (nie potrwa długo, zanim osiągnie milion znaków, może 5 miesięcy).
Dlaczego na przykład nie możesz po prostu pobrać przedmiotów 20K, które zmieniły się lub są nowe w ciągu ostatniej godziny i zaktualizować tylko te w DB? Nie musisz sprawdzać pozycji 1Mio w celu aktualizacji, kiedy pytasz co najmniej raz na godzinę? –
O ile nie korzystam z żądania interfejsu API, nie mam możliwości sprawdzenia, które elementy zostały zmienione. – celwell
Tak, oczywiście, ale zapytanie może filtrować dla najnowszych zmienionych żądań, zamiast wydać jedno ślepe zdjęcie dla jednego konkretnego przedmiotu? Z którym interfejsem API korzystasz, Facebook? –