Хранилища данных. Типы и особенности использования
Glossary Item Box
Общие положения
Хранение бизнес-данных в Creatio реализовано в виде реляционной базы данных (MS SQL, Oracle или PostgreSQL). Эти данные используются при решении различных пользовательских задач, выполнении бизнес-процессов и т. п. Помимо этого, приложение Creatio обеспечивает:
- Хранение данных пользователя и приложения (профиль пользователя, сессионные данные и т. п.).
- Обмен данными между узлами веб-фермы.
- Промежуточное хранение информации в момент перезапуска приложения или узла веб-фермы.
- Выполнение промежуточных действий с данными перед помещением их в хранилище.
Для решения таких задач в архитектуре Creatio реализована технология хранилищ данных. В основе технологии — объектная модель классов, которая представляет собой унифицированный API для доступа из приложения к данным, расположенным во внешнем хранилище (на текущий момент в Creatio в качестве такого внешнего хранилища используется Redis).
Хранилища Creatio в первую очередь ориентированы на выполнение служебных функций организации работы с данными, но при этом они могут быть использованы для решения пользовательских задач (в конфигурационной бизнес-логике).
Redis как сервер хранилищ Creatio
Сервером хранилищ Creatio в настоящее время является Redis — высокопроизводительное нереляционное хранилище данных.
Модель данных Redis основана на принципе пар "ключ-значение". Redis поддерживает доступ только по уникальному ключу, а в качестве хранимого значения могут выступать сложные структуры с дополнительными операциями. В Creatio помещаемые в хранилище данные хранятся в виде бинарных сериализованных объектов.
Redis поддерживает несколько стратегий хранения данных:
- Хранение данных только в памяти. Персистентная база данных преобразуется в некий кэширующий сервер.
- Периодическое сохранение данных на диск (по умолчанию). Периодическое создание копий (snapshot) один раз в 1–15 минут в зависимости от времени создания предыдущей копии и количества измененных ключей.
- Лог транзакций. Синхронная запись каждого изменения в специальный append-only лог-файл.
- Репликация. Каждому серверу можно указать мастер-сервер, после чего все изменения на мастере будут воспроизводиться и на подчиненном.
Конкретный способ хранения данных определяется путем конфигурирования сервера Redis. На текущий момент в Creatio хранение данных осуществляется в памяти с периодическим сохранением дампа на диск, однако не поддерживается возможность репликации данных.
Более подробно информация по Redis представлена в официальной документации.
Виды хранилищ Creatio. Хранилище данных и кэш
В Creatio реализована поддержка двух видов хранилищ — хранилища данных и кэша.
Хранилище данных предназначено для промежуточного хранения редко изменяемых, "долгосрочных" данных. В кэше же, как правило, хранится оперативная информация.
Дополнительно для каждого вида хранилища определены свои логические уровни размещения данных (табл. 1, 2).
Табл. 1. — Уровни хранилища данных
Уровень | Описание |
---|---|
Request | Уровень запроса. Данные доступны только в течение времени обработки текущего запроса. Соответствует значению перечисления Terrasoft.Core.Store.DataLevel.Request. |
Session | Уровень сессии. Данные доступны только в сессии текущего пользователя. Соответствует значению перечисления Terrasoft.Core.Store.DataLevel.Session. |
Application | Уровень приложения. Данные доступны для всего приложения. Соответствует значению перечисления Terrasoft.Core.Store.DataLevel.Application. |
Табл. 2. — Уровни кэша
Уровень | Описание |
---|---|
Session | Уровень сессии. Данные доступны только в сессии текущего пользователя. Соответствует значению перечисления Terrasoft.Core.Store.CacheLevel.Session. |
Workspace | Уровень рабочего пространства. Данные доступны для всех пользователей одного и того же рабочего пространства. Соответст |