База данных

База данных Docsvision используется для хранения данных и части функциональности Системы: ролевой модели, представлений, поисковых запросов. Поддерживаются СУБД Microsoft SQL Server и PostgreSQL.

БД Docsvision разделена логически на несколько частей:
  • Хранилище оперативных данных — здесь хранятся данные карточек, представлений, поисковых запросов, системная информация.

  • Хранилище архивных данных — здесь хранятся данные карточек, перемещенных в архив.

  • Хранилище журналов — здесь хранятся журналы работы Docsvision.

  • Хранилище метаданных — здесь хранятся различные служебные данные. К служебным данным могут, например, относиться: временные таблицы с изменениями объектов, внутренними курсорами, файловыми курсорами, иконками, представлениями и данными поисковых запросов.

Оперативные данные всегда располагаются в основной БД Docsvision. Архивные данные, журналы и метаданные могут храниться в основной БД или быть вынесены в отдельные сателлитные БД.

Названия сателлитных БД совпадают с названием основной БД с добавлением постфикса:
  • _Archive — у БД с архивными данными.

  • _Log — у БД с журналами.

  • _Metadata — у БД с метаданными.

Помимо указанных частей БД Docsvision можно выделить ещё одну — хранилище бинарных данных файлов, которое может полностью включаться в хранилище оперативных и архивных данных, или быть распределено между несколькими физическими хранилищами (файловым сервером и другими БД).

Таким образом все части БД Docsvision могут быть полностью размещены в единственной БД или распределены по нескольким физическим хранилищам.

Схема организации баз данных Docsvision
Рисунок 1. Схема организации баз данных Docsvision

AlwaysOn

Microsoft SQL предоставляет функцию Группы доступности AlwaysOn — решение высокой доступности и аварийного восстановления, являющееся альтернативой зеркальному отображению БД на уровне предприятия.

В Docsvision функция AlwaysOn используется для распределения нагрузки.

На реплики распределяются операции чтения:
Выполнение отчётов

В случае, если у отчёта выставлен признак "Только чтение", он будет выполняться на одной из вторичных реплик бизнес-процесса (без нагрузки на основную БД). Если отчёт записывает данные в БД, запросы будут поступать на основной узел.

Получение карточек

Вариант получения карточки из БД зависит от актуальности метки времени данной карточки: если есть реплика с актуальной меткой, карточка будет получена из данной реплики, иначе — из основного узла. Наличие метки проверяется по значению из серверного кэша или основного узла.

Выполнение поисковых запросов и представлений

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

Полный список методов API Docsvision, при выполнении которых могут использоваться реплики:
  • GetCardXmlData.

  • SectionReadRowsData;

  • SearchCreateProcessor — все методы поисков.

  • ViewCreateProcessor — все методы представлений.

  • CardGetState.

  • ReportGetData.

  • RowGetData.

  • RowGetHierarchy.

  • CardGetType.

  • SessionGetIdList.

  • UserGetInfo.

Если данные из основной БД Docsvision вытеснены в сателлитные БД, для них также создаются реплики, работа с которыми осуществляется по аналогичным правилам.

Работа БД в режиме AlwaysOn
Рисунок 2. Работа БД в режиме AlwaysOn

Количество обращений к каждой реплике БД фиксируется и используется при следующем запросе — выбирается реплика с минимальным количеством вызовов. Это делается с целью распределения нагрузки между репликами.