Под открытым небом должно быть отличное решение здесь. Он поддерживает все ваши требования, кроме правительственных.
Но если вы строите "с нуля", может быть, по крайней мере, воспользуетесь идеями?
Хранение: содержимое файла сохраняется в файловой системе. Простое управление, хранение, резервное копирование и прочее. Файлы не сохраняют имена, их содержимое сохраняется в двоичном формате, а файл называется хэшем (я полагаю, хэш содержимого?)
Метаданные: помещается в базу данных. Быстрый доступ, изменение, обновление и прочее. У каждого узла есть свойства - это имя, заголовок, описание, даты, информация аудита, все, что вам нужно. Это просто информация, и все это сохраняется в таблице «свойств».
Поиск: Alfresco использует Solr для поиска, раньше это был Lucene. У меня были довольно большие инсталляции, и если вы добавите lucene index на SSD, он будет очень быстрым. (Люцен в любом случае быстр). Он индексирует как содержимое файла, так и свойства, поэтому вы очень быстро получаете идентификатор узла.
В Alfresco реализованы CIFS, а также webdav, ftp и еще много чего. Дело в том, что вы можете просто смонтировать его на рабочие столы пользователей в виде папок или дисков.
Веб-интерфейс есть, есть центральный репозиторий, все требования. А так как это открытый исходный код, вы можете получить часть этого источника и использовать его в своем проекте. Хотя было бы намного лучше взять Alfresco Community и просто внести свой вклад, если вы чувствуете себя хорошо.