Постоянно разрабатывая корпоративные информационные системы, работающие с документами, сталкиваешься с задачей организации хранения документов в базе данных. При этом требуется обеспечить: надежное хранение структурированных и неструктурированных документов, ссылки между документами, хранение версий документов, развитые функции поиска документов, массовый ввод/вывод документов, эффективную одновременную работу большого числа пользователей с большим количеством документов, а также контроль доступа к документам.
Данные в информационных системах могут быть самыми разнообразными: от совсем не структурированных (графические образы, мильтимедиа и пр.) до сложно структурированных объектов, имеющих сотни реквизитов. Все это может быть обобщено до понятия документа, обладающего своим жизненным циклом, версионностью, атрибутами безопасности. Документ может из первоначального неструктурированного в процессе обработки стать структурирован-ным. Часто документ имеет тип (служебная записка, договор, анкета и пр.), что обуславливает структуру его реквизитов.
Часто заказчиками корпоративных систем выдвигаются требования к используемой СУБД. Мы достаточно долго в совей работе использовали собственную объектно-ориентированную СУБД НИКА. Не редко возникают задачи для интеграции информационных систем на уровне СУБД. В последних разработках мы перенесли накопленный опыт работы с документами на использование популярных реляционных СУБД (Microsoft SQL Server, Oracle, MySQL).
Названные требования привели нас к созданию документо — ориентированного хранилища документов (Nexus).
Хранилище представляет собой набор взаимосвязанных программных компонент и приложений, организующих хранение документов в современных промышленных СУБД (MS SQL Server 2005/2008, Oracle, MySQL и др.). Программные компоненты предполагают разнообразное конфигурирование: могут быть интегрированы в информационную систему, обеспечивая документно -реляционное отображение и скрывая от информационной системы специфику СУБД, или могут быть запущены как самостоятельный легковесный Content Server.
На высоком уровне абстракции Хранилище содержит набор коллекций типизированных документов (т.е. документов с фиксированной структурой, хотя к ним и могут быть приложены файлы произвольного формата). Язык запросов Хранилища позволяет эффективно формулировать условия поиска структурированных документов, а также включать элементы полнотекстового поиска, относящиеся к документам и приложенным файлам.
Хранилище служит посредником между корпоративной системой и СУБД, преобразуя запросы корпоративной системы, сформулированные в терминах структурированных документов (например, XSD, XML, XPath), в команды СУБД (например, на языке SQL). Хранилище при этом обеспечивает конкурентный доступ к документам, сохраняет версии документов, а также применяет заданные правила разграничения доступа к документам и выполняет протоколирование действий пользователя.
Автор: