Кэширование — это концепция, которая создает копию структуры таблицы базы данных, обеспечивая удобную среду для пользовательских приложений. OrientDB имеет несколько механизмов кэширования на разных уровнях.
Следующая иллюстрация дает представление о том, что такое кэширование.
На приведенном выше рисунке DB1 , DB2 , DB3 — это три разных экземпляра базы данных, используемых в приложении.
Кэш уровня 1 — это локальный кеш, в котором хранятся все сущности, известные определенному сеансу. Если у вас есть три транзакции в этом сеансе, он будет содержать все объекты, используемые всеми тремя транзакциями. Этот кеш очищается, когда вы закрываете сеанс или когда вы выполняете «чистый» метод. Это снижает нагрузку на операции ввода-вывода между приложением и базой данных и, в свою очередь, повышает производительность.
Кеш уровня 2 — это реальный кеш, который работает с использованием стороннего поставщика. Вы можете иметь полный контроль над содержимым кэша, т.е. вы сможете указать, какие записи следует удалять, какие хранить дольше и так далее. Это полный общий кеш между несколькими потоками.
Модель хранения — это не что иное, как устройство хранения, которое является диском, памятью или удаленным сервером.
Как работает кэш в OrientDB?
Кэширование OrientDB предоставляет разные методологии в разных средах. Кэширование в основном используется для более быстрых транзакций базы данных, сокращения времени обработки транзакции и повышения производительности. Следующие блок-схемы показывают, как работает кэширование в локальном режиме и режиме клиент-сервер.
Локальный режим (встроенная база данных)
Следующая схема показывает, как запись находится между хранилищем и используемым приложением в локальном режиме, т. Е. Когда сервер базы данных находится на вашем локальном хосте.
Когда клиентское приложение запрашивает запись, OrientDB проверяет следующее:
-
Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.
-
Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.
-
Если в этот момент запись не находится в кеше, то запрашивает ее в хранилище (диск, память).
Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.
Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.
Если в этот момент запись не находится в кеше, то запрашивает ее в хранилище (диск, память).
Режим клиент-сервер (удаленная база данных)
Следующая блок-схема показывает, как запись находится между хранилищем и используемым приложением в режиме клиент-сервер, т. Е. Когда сервер базы данных находится в удаленном расположении.
Когда клиентское приложение запрашивает запись, OrientDB проверяет следующее:
Если транзакция началась, то она ищет внутри транзакции измененные записи и возвращает ее, если найдена.
Если локальный кеш включен и содержит запрошенную запись, то возвращает ее.
В этот момент, если запись не находится в кеше, она запрашивает ее у сервера через вызов TCP / IP.
На сервере, если локальный кеш включен и содержит запрошенную запись, то возвращает ее.
На этом этапе запись все еще не кэшируется на сервере, а затем запрашивает ее в хранилище (диск, память).