Файловое хранилище
Общие принципы
Подход предназначен для хранения блоб полей вне базы данных. При сохранении каждому файлу присваивается уникальный идентификатор, с помощью которого можно этот файл обновить, удалить, измиенть.
Предполагается, что работа с блоб полем осуществляется внутри транзакции. При этом не нарушается целостность транзакции.
Предусмотрен отдельный механизм, при котором блоб поле дублируется в базе данных. При чтении данных содержание базы данных имеет приоритет над файловым хранилищем.
Настройки файлового хранилища
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);