file-storage.xml

Конфигурационный файл для настройки файловых хранилищ.

В конфигурационном файле file-storage.xml настраивается количество файловых хранилищ, их тип, активное хранилище и прочие характеристики.

Наличие файла не обязательно.

Путь к файлу

Файл создается и хранится в каталоге, путь к которому указан в параметре "-Dext.prop.dir" виртуальной машины Java. Например, Dext.prop.dir=/opt/nausd4/conf.

Содержание файла

Параметры файлового хранилища

Характеристика Блок или тег в файле Описание
Число файловых хранилищ количество блоков <storage>

Число файловых хранилищ соответствует количеству блоков.

Можно настроить одно или несколько файловых хранилищ

Активное хранилище тег <active>

Хранилище, в котором размещаются файлы при добавлении.

Другие хранилища будут хранить ранее добавленные в них файлы.

Если активное хранилище не указано (тег <active> </active> удален вместе с содержимым), то файлы будут помещаться в базу данных

Включение механизма "склеивания" файлов"

тег <deduplication>

Необязательный параметр.

Регулирует возможность "склеивания" файлов. Склеивание файлов — процедура присвоения одного хеша и одного соответствующего контента целой группе файлов, если среди загруженных присутствуют файлы с одинаковым контентом.

Возможные значения:

  • true (по умолчанию) — при загрузке файлов с одинаковым контентом (дубликатов), этим файлам присваивается один хеш и один соответствующий контент;
  • false — при загрузке файлов с одинаковым контентом (дубликатов), каждому новому загруженному файлу присваивается свой контент и хеш

Перед переключением параметра <deduplication> c false на true необходимо выполнять команду api.fileStorage.shrink(), см. api.fileStorage Работа с файловыми хранилищами

Код файлового хранилища

тег <code>

Код используется для указания активного хранилища

Описание файлового хранилища

тег <description>

 

Путь до хранилища в файловой системе

тег <path>

Только для хранения файлов в файловой системе.

Директория, указанная в этом параметре, должна существовать и быть пустой.

После применения конфигурации в данном каталоге будет создана структура для хранения файлов

Сжатие

тег <compress>

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

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

В базе данных все файлы хранятся в сжатом виде

Тип хранилища

тег <type>

Необязательный параметр.

Тип хранилища, позволяет выбрать в качестве хранилища файловую систему или Amazon S3.

Возможные варианты:

  • disk — используется файловая система;
  • s3 — AWScredentials должны быть сконфигурированы;
  • groovy — groovyExtendedStorage должен быть сконфигурирован, необходим groovy-модуль с реализацией

Код s3endpoint

тег <s3endpoint>

Необязательный параметр

Код s3endpoint, где описаны параметры подключения

Имя бакета в S3

тег <bucketName>

Необязательный параметр

Имя бакета в S3. Если его не существует, то он будет создан

Правило именования:

  • Имя бакета не должно содержать меньше 3 или больше 63 символов
  • Имя бакета может содержать символы в нижнем регистре, цифры или точку
  • Каждая часть имени бакета, разделенная точкой должна начинаться с символа в нижнем регистре или цифры и оканчиваться на символ в нижнем регистре или цифру

Структура S3 хранилища

тег <hierarchical>

Необязательный параметр.

Структура каталогов для файлового хранилища S3.

Возможные значения:

  • false (по умолчанию) — плоская структура;
  • true — иерархическая структура

Пример: <hierarchical>false</hierarchical>

Параметры настройки хранилища, работающего по протоколу S3 (Amazon S3, Ceph)

Характеристика Блок или тег в файле Описание
Список конфигураций для S3 тег <s3endpoints>

Необязательный параметр

Настройка различных доступов к S3.

Должен быть, если есть хотя бы одно S3 хранилище

Конфигурация S3 хранилища тег <s3endpoint>

Необязательный параметр

Настройка доступа к S3, параметр заполняется, если есть хотя бы одно S3 хранилище

Код

тег <code>

Уникальный код для данного s3endpoint

Ключ доступа к S3 тег <accessKey> AccessKey из реквизитов доступа к S3

Секретный ключ доступа к S3

тег <secretKey>

SecretKey из реквизитов доступа к S3

Адрес S3 хранилища

тег <url>

Необязательный параметр.

Указывается только при использовании S3-хранилища, отличного от AWS S3.

Пример:

<url>https://ceph-storage.domain.local/</url>

Количество попыток

тег <numberOfAttempts>

Только для хранения файлов в S3.

Число, обозначающее сколько раз подряд операции должны прерваться по тайм-ауту, чтобы файловое хранилище заблокировалось на определенное время

Таймаут для операции

тег <taskTimeout>

Только для хранения файлов в S3.

Таймаут выполнения действия в файловом хранилище в миллисекундах

Время блокировки

тег <rampDownPeriod>

Только для хранения файлов в S3.

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

Параметры настройки хранилища, работающего через groovy-модуль

Характеристика Блок или тег в файле Описание
Конфигурация groovy хранилища тег <groovyExtendedStorage>

Необязательный параметр

Настройка доступа к groovy-файловому хранилищу.

Должен быть, если есть хотя бы одно хранилище типа groovy

Название модуля тег <module>

Название модуля, который содержит реализацию взаимодействия с файловым хранилищем

Метод, возвращающий реализацию FileStorageCRUD

тег <method>

Метод, который должен возвращать реализацию интерфейса ru.naumen.core.server.filestorage.spi.storages.FileStorageCRUD

Параметры инициализации

тег <initParams>

Параметры передаваемые в метод указанный в теге method

Интерфейс Interface FileStorageCRUD

Интерфейс для основных операций с внешним файловым хранилищем предназначен для реализации в groovy-модуле.

  • create

    java.lang.String create(DtObject file, java.io.InputStream content)

    Создание файла во внешнем хранилище.

    Параметры:

    • file — БО файл;
    • content — содержимое файла

    Возвращает идентификатор файла.

  • delete

    void delete(java.lang.String id)

    Параметр:

    • id — идентификатор файла.
  • exists

    boolean exists(java.lang.String id)

    Проверить существование файла.

    Параметр:

    • id — идентификатор файла.

    Возвращает true, если файл существует во внешнем хранилище.

  • getFilePath

    java.lang.String getFilePath(java.lang.String uuid)

    Получить идентификатор файла во внешнем хранилище.

    Параметр:

    • uuid — идентификатор БО типа file.

    Возвращает идентификатор файла во внешнем хранилище.

  • read

    java.io.InputStream read(java.lang.String id)

    Получить содержимое файла.

    Параметр:

    • id — идентификатор файла.

    Возвращает содержимое файла.

  • saveFilePath

    void saveFilePath(java.lang.String uuid, java.lang.String externalId)

    Параметры:

    • uuid — идентификатор БО типа file;
    • externalId — идентификатор файла во внешнем хранилище
  • update

    void update(java.lang.String id, DtObject file, java.io.InputStream content)

    Обновить содержимое файла во внешнем хранилище.

    Параметры:

    • id — идентификатор файла;
    • file — БО файл;
    • content — содержимое файла.

Примеры