Файловое хранилище
Общие принципы
Подход предназначен для хранения блоб полей вне базы данных. При сохранении каждому файлу присваивается уникальный идентификатор, с помощью которого можно этот файл обновить, удалить, измиенть.
Предполагается, что работа с блоб полем осуществляется внутри транзакции. При этом не нарушается целостность транзакции.
Предусмотрен отдельный механизм, при котором блоб поле дублируется в базе данных. При чтении данных содержание базы данных имеет приоритет над файловым хранилищем.
Настройки файлового хранилища
blob-saver: # path to file storage file-storage-path: path-to-storage # use temp folder as file storage temp-storage: true # saving blob in db or only in file storage persist-in-db: true
Структура таблицы файлового хранилища
CREATE TABLE FileStorage
(
/** unique identifier */
uid VARCHAR(40) NOT NULL,
/** file hash */
file_hash VARCHAR(50) NOT NULL,
/** file create date */
create_date DATETIME NOT NULL DEFAULT GETDATE(),
/** file update date */
update_date DATETIME,
/** blob column to save data in db */
data BLOB,
CONSTRAINT PK_FileStorage PRIMARY KEY (uid)
);
Методы работы с хранилищем
// Sqve data stream to storage String save(CallContext context, InputStream data); // Read data from storage byte[] read(CallContext context, String uid); // Update data in storage void update(CallContext context, String uid, InputStream data); // Delete void delete(CallContext context, String uid);