Хранилище документов


Не путать хранение документов с документооборотом.

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

Но есть общие требования к системам такого типа:

  • хранение в виде файлов;
  • хранение версий файлов;
  • поддержка описания для документа;
  • поддержка меток (тегов) для быстрого поиска;
  • дедупликация;
  • поиск по документам (файлам) и их версиям;
  • поддержка классификатора;
  • поддержка прав доступа (ACL);
  • при необходимости поддержка электронной цифровой подписи (ЭЦП)

При написании подобных систем нужно учитывать некоторый опыт реализации:

  • не хранить все файлы в одном каталоге. Большое количество файлов отрицательно влияет на производительность при проведении файловых операций, например при архивировании хранилища. Рекомендуется хранить в виде дерева поддиректорий (не более 1000-4000 вложений подкаталогов каждого уровня);
  • не хранить файлы в виде оригинальных имён. Это может поставить проблему множественного дублирования одного и того же файла, но с разными названиями. Рекомендуется хранение с условным именем. Например в виде хеш суммы md5 или sha256. Имена файлов можно задать в отдельной реляционной базе данных (БД) в виде пар хеш имени файла - список имен документа;
  • не организовывать хранение поддокументов большого документа в виде иерархической организации подкаталогов. Иерархию можно организовать в реляционной БД, которая будет более производительна;
  • текстовые, гиппертекстовые и другие виды документов лучше хранить непосредственно в БД. Это повысит скорость при поиске. 

Большинство систем хранения документов реализовано только в виде обычного файлового хранилища. Разработчики считают, что рабочий процесс (workflow) движения документов гораздо важнее организации хранения, что в свою очередь приводит к проблемам, в том числе и с замедлением работы с хранилищем. Некоторые даже рекомендуют использовать обычные системы контроля версий VCS (git, mercurial и др), но это решение подходит скорее только к однопользовательским решениям.


RemiZOffAlex   Создано: 2018-12-16   Обновлено: 2018-12-16