Главная » Блоги Экспертов И ИТ-Компаний » Как система ЛЕТОГРАФ индексирует объекты
Начинаем публикацию статей о практике внедрения СЭД 2 года назад

Как система ЛЕТОГРАФ индексирует объекты

Индексация объектов в рамках системы ЛЕТОГРАФ — отдельная важная тема, которая позволяет понять, как разработчикам системы удалось реализовать быстрый поиск данных и предоставление их пользователю в требуемом виде. Эффективная работа системы ЛЕТОГРАФ с индексами обеспечивается за счет прямого доступа к данным, исключающего лишние преобразования.

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

Мы постоянно работаем над совершенствованием системы индексации системы ЛЕТОГРАФ — ведь с ее помощью мы обеспечиваем и быстрое создание выборок для построения отчетов, и визуализацию массивов данных для пользователей. При этом мы всегда помним о необходимости обеспечения горизонтального масштабирования. Подробнее об этом — ниже.

Какие бывают индексы

Каждый объект, который появляется в системе ЛЕТОГРАФ, порождает целый набор индексов. Индексы бывают двух видов: системные и прикладные.

Системные индексы — это обязательный набор индексов для каждого объекта. Системные индексы позволяют быстро отбирать объекты в зависимости от шаблона, признака удаления, прав доступа, принадлежности к хранилищу и т.д. В системе ЛЕТОГРАФ несколько десятков системных индексов, и они используются в разных сочетаниях в зависимости от решаемой задачи.

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

Отметим такой вид прикладных индексов, как “зависимые индексы” — которые отражают взаимосвязи данного объекта с другими объектами системы. Такие индексы позволяют преобразовать или дополнить сложную информационную модель таким образом, чтобы можно было максимально быстро и эффективно формировать необходимые выборки и строить отчетов без дополнительного дублирования данных. Самый простой пример использования “зависимого” индекса - возможность искать документ по фамилии ответственного сотрудника. Действительно, в карточке документа список сотрудников - это справочник, и значение реквизита - это ссылка на другой объект (обычный индекс не позволит по ссылке найти фамилию). “Зависимый” индекс позволяет представить информацию, как если бы в карточке документа была указана фамилия в текстовом виде.  

Также мы выделяем “темпоральные” индексы, которые отражают историю изменений всех объектов системы с указанием временных меток. Темпоральные индексы предоставляют возможность поиска объектов на определенный момент в прошлом. Например, можно получить отчет, как будто он был сформирован год назад: количество объектов и значение их реквизитов будет актуально на заданную дату. .

Итак, система индексации, которую мы разработали, позволяет комплексно, быстро и эффективно решать задачу формирования выборок и построения отчетов. Не секрет, однако, что в некоторых решениях, основанных на базах данных, объемы индексов могут превышать объемы данных. Как же хранятся индексы системы ЛЕТОГРАФ?

Как хранятся индексы

Для хранения индексов в системе ЛЕТОГРАФ используются битовые индексы — т.е. битовые строки , организованные в иерархии. При формировании отчетов важно, что некоторые значения не просто индексируются, как строки, но еще и используются в дальнейшем для выполнения арифметических операций — для этого численные значения нужно индексировать специальным образом. Мы используем bitslice-индексы, которые получаются путем преобразования числовых значений в последовательность степеней числа 2. 

Битовые индексы иерархически привязаны к хранилищу, и вместе с механизмами идентификации системы ЛЕТОГРАФ поддерживают разделение баз данных по различным дисковым системам и различным серверам баз данных, обеспечивая, таким образом, горизонтальное масштабирование.

Синхронная и асинхронная индексация

Важно, что индексация объектов системы ЛЕТОГРАФ может осуществляться как в синхронном , так и — с целью балансировки нагрузки — в асинхронном режиме. Для каждого типа индексов отдельно определяется, какая часть индексов будет строиться синхронно, и какая — асинхронно.

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

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

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

Кэширование индексов

Классическим способом повышения производительности любой СУБД является кэширование индексов. Мы разработали алгоритм кэширования индексов на серверах приложений, которые обеспечивают работу пользовательских сессий.

Кэширование индексов системы ЛЕТОГРАФ работает так. В момент авторизации каждого пользователя система вычисляет, в зависимости от его прав доступа и дополнительных специальных настроек, доступное пользователю множество объектов. Рассчитанные множества доступных объектов для всех пользователей системы используются при кэшировании индексов, а перерасчет выполняется на множестве объектов, измененных с момента последнего обновления кэша. Это существенно сокращает нагрузку на систему, обеспечивая отклик системы не более секунды для пользователя.

Как индексация помогает создавать отчеты

Механизм индексации системы ЛЕТОГРАФ не нужен пользователю «сам по себе» — он нужен для того, чтобы пользователь мог быстро получать от системы нужные ему выборки для формирования отчетов. Способы поиска объектов определяются типами свойств их шаблонов. Чтобы найти какой-либо объект, система в соответствие с параметрами запроса, информацией шаблонов и результатами поиска по другим запросам определяет, какие именно объекты нужно искать, на каких шаблонах должны быть основаны эти объекты и какими они должны обладать атрибутами. Вся эта информация преобразуется в соответствующий код, который использует индексы для выполнения корректного поиска по запросу. А поскольку система ЛЕТОГРАФ использует битовые индексы, создание требуемых выборок объектов для отчетов происходит очень быстро.

Именно благодаря разнообразным индексам, формируемым системой ЛЕТОГРАФ, пользователь может получить любые отчеты, включая статистические отчеты, содержащие результаты расчетов, отчеты по состоянию на определенный момент времени, на определенный период времени и т.п. Таким образом, механизмы индексации позволяют решать все задачи, связанные с выборкой и построением отчетов на основе множества объектов — не забывая о горизонтальном масштабировании, которое эффективно балансирует нагрузку на систему и повышает ее общую производительность.

Резюме

Для всех аспектов функционирования платформы ЛЕТОГРАФ важно то, что любые решения на базе этой системы, какой бы богатой функциональностью они ни обладали, всегда создаются путем настроек. И даже управление такой сложной функциональностью, как создание шаблонов, описание индексов, разработка системы взаимосвязей объектов, планирование синхронной и асинхронной генерации индексов, их распределение между дисковыми массивами и серверами, выполняется исключительно путем настроек, которые вносятся системными технологами без какого-либо программирования. И это еще одно серьезное техническое достижение и преимущество системы ЛЕТОГРАФ.


Данный материал является частной записью члена сообщества Club.CNews.
Редакция CNews не несет ответственности за его содержание.
Комментарии
Другие публикации
RU, Москва
+7 (495) 741-48-08
---

О компании

Компания ЛЕТОГРАФ занимается разработкой и внедрением одноименной системы управления документами, автоматизации бизнес-процессов и интеграции приложений. Основные направления деятельности - развитие платформы ЛЕТОГРАФ и реализация масштабных проектов внедрения.

Компания основана в 2003 и за время своего существования прошла путь от небольших проектов на 5-10 рабочих мест, позволяющих осуществлять регистрацию и поиск документов, до масштабных решений, в которых несколько тысяч пользователей в десятках и сотнях территориально-распределенных подразделений выполняют все операции по работе с документами.

О платформе ЛЕТОГРАФ

ЛЕТОГРАФ – готовое централизованное расширяемое решение для автоматизации документооборота и архива территориально-распределенных организаций. С помощью платформы ЛЕТОГРАФ могут быть решены все задачи по управлению документами: от «классического» документооборота и архива до управления корпоративным контентом (ЕСМ).

Масштабируемые отказоустойчивые решения на базе платформы ЛЕТОГРАФ устанавливаются централизованно на кластере серверов и реализуют на практике концепцию управления «большими данными». Пользователи работают с системой в интерфейсе веб-браузера и получают доступ к информации в режиме он-лайн со стационарных или мобильных устройств.

 

Система ЛЕТОГРАФ унифицирует работу со всеми электронными и бумажными документами организации (входящими, исходящими, внутренними, кадровыми, архивными, договорами, счетами, заявками и пр.), а также может быть интегрирована с корпоративными и внешними системами.

Адрес: Россия, 105066, г. Москва, ул. Бауманская, д. 6 

Контактное лицо: Александр Иванов, специалист по маркетингу


Забыл пароль?
Авторизоваться через
Зарегистрируйся сейчас!
Присоединяйся к нашему обществу для того чтобы познакомиться с новыми людьми, создать собственный блог, публиковать анонсы событий и объявления, а также участвовать в обсуждении публикаций CNews. Мы создали единое пространство для общения специалистов рынка информационных технологий и всех, кто интересуется современными технологиями. Регистрация =>