База данных
База данных Docsvision используется для хранения данных и части функциональности Системы: ролевой модели, представлений, поисковых запросов. Поддерживаются СУБД Microsoft SQL Server и PostgreSQL.
-
Хранилище оперативных данных — здесь хранятся данные карточек, представлений, поисковых запросов, системная информация.
-
Хранилище архивных данных — здесь хранятся данные карточек, перемещенных в архив.
-
Хранилище журналов — здесь хранятся журналы работы Docsvision.
-
Хранилище метаданных — здесь хранятся различные служебные данные. К служебным данным могут, например, относиться: временные таблицы с изменениями объектов, внутренними курсорами, файловыми курсорами, иконками, представлениями и данными поисковых запросов.
Оперативные данные всегда располагаются в основной БД Docsvision. Архивные данные, журналы и метаданные могут храниться в основной БД или быть вынесены в отдельные сателлитные БД.
-
_Archive — у БД с архивными данными.
-
_Log — у БД с журналами.
-
_Metadata — у БД с метаданными.
Помимо указанных частей БД Docsvision можно выделить ещё одну — хранилище бинарных данных файлов, которое может полностью включаться в хранилище оперативных и архивных данных, или быть распределено между несколькими физическими хранилищами (файловым сервером и другими БД).
Таким образом все части БД Docsvision могут быть полностью размещены в единственной БД или распределены по нескольким физическим хранилищам.
![Схема организации баз данных Docsvision](../_images/db-schema.png)
AlwaysOn
Microsoft SQL предоставляет функцию Группы доступности AlwaysOn — решение высокой доступности и аварийного восстановления, являющееся альтернативой зеркальному отображению БД на уровне предприятия.
В Docsvision функция AlwaysOn используется для распределения нагрузки.
- Выполнение отчётов
-
В случае, если у отчёта выставлен признак "Только чтение", он будет выполняться на одной из вторичных реплик бизнес-процесса (без нагрузки на основную БД). Если отчёт записывает данные в БД, запросы будут поступать на основной узел.
- Получение карточек
-
Вариант получения карточки из БД зависит от актуальности метки времени данной карточки: если есть реплика с актуальной меткой, карточка будет получена из данной реплики, иначе — из основного узла. Наличие метки проверяется по значению из серверного кэша или основного узла.
- Выполнение поисковых запросов и представлений
-
Поисковые запросы и формирование представлений выполняются на репликах. Выбор реплики фиксируется в серверном кэше и в последующем используется для загрузки новых страниц представлений. Выбор может также оказывать влияние на работу остальных методов, использующих поисковые запросы и представления.
-
GetCardXmlData
. -
SectionReadRowsData
; -
SearchCreateProcessor
— все методы поисков. -
ViewCreateProcessor
— все методы представлений. -
CardGetState
. -
ReportGetData
. -
RowGetData
. -
RowGetHierarchy
. -
CardGetType
. -
SessionGetIdList
. -
UserGetInfo
.
Если данные из основной БД Docsvision вытеснены в сателлитные БД, для них также создаются реплики, работа с которыми осуществляется по аналогичным правилам.
![Работа БД в режиме AlwaysOn](../_images/db-always-on.png)
Количество обращений к каждой реплике БД фиксируется и используется при следующем запросе — выбирается реплика с минимальным количеством вызовов. Это делается с целью распределения нагрузки между репликами.