Организация хранения файлов

Друзья, кто из вас организовывал хранение файлов при помощи FileStream?
Если да, то не могли бы вы поделиться опытом?
Рассказать в чем плюсы и минусы?
И как можно перейти от хранения файлов в таблице tbl_Files к хранению файлов в файловой системе при помощи file stream?

Нравится

14 комментариев

Вот есть хорошая статья по организации FileStream
http://blogs.msdn.com/b/alexejs/archive/2009/06/03/filestream.aspx
Основное достоинство этой технологии - это то что объем хранимой информации не влияет на общий объем БД, а следовательно можно пользоваться MS SQL Server 2008 R2 Express Edition бесплатно еще какое-то время, пока база не станет объемом 4 Gb.

Туда бы еще и содержимое tbl_MailMessage отправить:smile:

Основной размер писем составляют аттачи. В новой версии почтового клиента аттачи вынесены в tbl_Files. Именно с этой целью. :wink:

"Евгений Либин" написал:В новой версии почтового клиента

кстати сразу еще один дополнительный + к выбору именно вашей версии выходит при условии реализации внешнего хранения файлов - убираем из бюджета Outlook и полновесный SQL server:smile:

Кстати, в инете не раз находил информацию о том что в MS SQL 2008R2 Expr. ed. размер базы увеличен с 4Гб до 10Гб, но на сайте микрософта подтверждения не нашел. Если это правда - то тогда это супер.

Строго говоря и 4Гб без хранения файлов и подобного более чем достаточно было бы... правда, там еще ограничения конечно есть в плане процессоров, памяти и т.д, да и про tbl_SystemLog со скриншотами не забываем:) в рамках оффтопика...

"Евгений Либин" написал:Вот есть хорошая статья по организации FileStream
http://blogs.msdn.com/b/alexejs/archive/2009/06/03/filestream.aspx
Основное достоинство этой технологии - это то что объем хранимой информации не влияет на общий объем БД, а следовательно можно пользоваться MS SQL Server 2008 R2 Express Edition бесплатно еще какое-то время, пока база не станет объемом 4 Gb.

спасибо, Евгений :) очень познавательно.

кстати, а как быть с backup? как происходит бэкап данных при использовании filestream?

Hello, colleagues !
This link really helped, thank You :). Have You tested the solution with table tbl_Files? I noticed, that some "instead of" triggers have to be removed to be able to change column FileDate datatype from Image to Varbinary, that use FileStreams. This cause access rights functionality.

Это решение уже кто-то в реальном проекте использовал? Или всё на стадии интереса?

"Евгений Либин" написал:Основной размер писем составляют аттачи. В новой версии почтового клиента аттачи вынесены в tbl_Files. Именно с этой целью.

У нас например за два года работы эта таблица выросла уже до 36гб (лимит Firebird), есть ли наработки по разделению таблицы tbl_Files на несколько? Например с UNION в SELECT запросе и подмене в INSERT`е и насколько это повлияет на производительность?

Здравствуйте!

К сожалению у нас не было опыта в разделении таблицы tbl_Files. Производительность, естественно, незначительно уменьшиться. Для того чтобы получить конкретные данные - необходимо тестирование.

Спасибо Дмитрий, значит будем тестировать...

Добрый день!
Возвращаясь к filestream, можно его все-таки использовать в Террасофте для таблицы файлов или нет?
TS 3.4.1.
SQL 2014
Террасофт умеет работать с данными типа varbinary(max) filestream?

1) включили возможность файстрима на сервере
2)создали файловую группу для базы
3)в качестве проверки функциональности создали новую таблицу через sql, там поле varbinary(max) filestream-засунули туда данные через sql - ну тут все ок
4) добавили в таблицу tbl_Files новое поле FileData1 varbinary(max) filestream; (перед этим пришлось удалить триггер к этой таблице - на instead of delete)
5) Пошли в террасофт администратор, там взяли в таблице tbl_Files, полe FileData сменила на FileData1 (не меняя при этом тип, и не сохраняя в бд потом таблицу (потому как не видим типа varbinary в приложении), пошли в sq_Files - там выбрали FileData1 вместо FileData.
6) Зашла в террасофт, добавили файл, файл даже добавился файловую группу, но террасофт его не может потом прочесть, потому что видимо не подозревает про тип варбинари с признаком файлстрим

Работа с filestream обсуждалась тут и тут. Также тут обсуждают альтернативные реализации с хранением в другой базе.

Показать все комментарии