1С-Предприятие 8.0. Практическое пособие разработчика


Обычный кэш


Если при обращении к обычному кэшу требуемых данных в нем нет, то выполняется чтение данных объекта из базы данных и сохранение их в кэше. Уникальным идентификатором для кэша, в данном случае, будет являться ссылка на объект базы данных. Поэтому данные каждого считанного [554] объекта могут существовать в кэше в одном из двух видов: либо все данные объекта, либо представление объекта.

Таким образом, если мы обратимся к кэшу для получения представления объекта, и в кэше есть информация для нашей ссылки, данные будут взяты из кэша (если в кэше весь объект, нужное представление будет получено из данных объекта). Если в кэше нет информации для нашей ссылки – из базы данных в кэш будут считаны только поля, необходимые для формирования представления объекта.

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

Считанные данные будут находиться в кэше до тех пор, пока не наступит одно из трех событий:

·считанные данные будут вытеснены из кэша другими считанными данными других объектов (переполнение кэша),
·при очередном обращении к кэшу окажется, что считанные данные были изменены в базе данных,
·закончится интервал времени в 20 минут,
·данные будут изменены в базе данных.

Все считанные данные помещаются в последовательную очередь и, поскольку объем кэша ограничен, наиболее старые данные будут вытесняться из кэша последними считанными данными.

При повторном обращении к кэшу за данными уже считанного объекта будет анализироваться интервал времени, прошедший с момента появления данных в кэше.

Если обращение происходит в пределах 20 секунд после поступления данных в кэш, данные считаются верными (валидными). Если интервал превысил 20 секунд, будет выполняться проверка на то, что версия данных, хранящихся в кэше, соответствует версии данных, находящихся в базе данных. В случае если окажется, что версии данных не совпадают (т.е. произошло изменение данных в базе данных), данные, находящиеся в кэше будут удалены из него и [555] выполнено повторное считывание данных из базы данных. Начиная с этого момента начнется отсчет следующего 20-ти секундного интервала валидности этих данных.




Начало  Назад  Вперед



Книжный магазин