Кэширование объектов с учетом их полей

354
04 февраля 2017, 06:56

Есть объекты, которые предоставляют данные для постройки графика. Нужно построить механизм кэширования этих объектов, но не простой а с некоторой загвоздкой. Есть примерно такой класс, объекты которого будем кешировать:

public class MyObject
{
    public DateTime DateTime { get; set; }
    public int MyInt { get; set; }
    // остальные свойства
}

Данные получаем с помощью следующего метода:

 public List<MyObject> GetData(string tableName, int timeFrame, DateTime lastObjectTime, int objectCount)
    {
        // Проверить наличие данных в кэше.
        // Если в кэше не все данные послать запрос на сервер для
        // отсутствующих данных. Сохранить полученные данные в кэш.
        // Вернуть результат запроса
    }

tableName - название графика, timeFrame - временное разрешение графика, lastObjectTime - наибольшее время в наборе запрашиваемых объектов, objectCount - количество запрашиваемых объектов;

Т.е. запрашиваем объекты с даты lastObjectTime против шкалы времени. У двух смежных объектов в наборе DateTime отличается на значение timeFrame.

Загвоздка в следующем: Объекты в кеше отсортированы по времени. Но в кэше могут быть смежные объекты (назовем их об.А и об.Б) у которых разница по времени больше timeFrame. Т.е. между этими 2 объектами на сервере существуют другие объекты. В этом случае нам нужно выбрать с кеша все объекты по объект А, остальные объекты нужно запросить с сервера.

У меня пока только одна идея как это организовать: Выбирать из кеша objectCount объектов и искать первый объект, DateTime которого не соответствует timeFrame. Но этот способ не очень производительный, т.к. придется проверять все объекты в запросе.

Возможно есть более оптимальный способ?

READ ALSO
EntityFramework 6 и DB2

EntityFramework 6 и DB2

При выводе списка в представлении происходит ошибка Поле не найдено: "DB2ConnSettings_bEnableEFCaseSensitivity"

462
PHPUNIT возвращает неверный результат в теста

PHPUNIT возвращает неверный результат в теста

Например есть функция логина:

431
Создание классов

Создание классов

Правильно ли создавать 2 класса в одном файле php?

380