2016-03-31 7 views
2

Я работаю над пользовательской системой управления документами, которая использует Filestream/FileTable в качестве хранилища документов.Создание дерева каталогов FileTable

Структура каталогов выглядит следующим образом: APPNameDir -> Год -> Месяц -> Файлы

+ APPNameDir + 2015 + 12 File 1.pdf File 2.pdf + 2016 + 01 File 3.pdf File 4.pdf + 02 File 5.pdf File 6.pdf

То, что я хочу сделать, это позвонить из C# код хранимой процедуры, и проход дерево данных (например, (BooksApp/2016/03) и данные file_stream.

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

Я видел это post, поэтому я могу создать одну папку за раз, но не сразу несколько папок.

Я думаю, что я могу проверить, не существует ли 2016, а затем создать его. Затем проверьте, не существует ли месяц 03, затем создайте его и так далее, но я беспокоюсь о производительности, когда миллионы документов находятся в базе данных, потому что я хочу вставить документ из веб-приложения менее чем за 2 секунды (это ограничение). Несколько дней назад я сделал несколько сканеров производительности, а вставка документа из веб-приложения заняла от 100 до 300 миллисекунд, когда в базе данных было 100K документов. Если мне нужно запросить FileTable для каждого каталога, а затем создать их, если они не существуют, я боюсь, что производительность уменьшится при таком количестве документов в БД.

У вас возникли аналогичные потребности в ваших проектах? Есть идеи?

ответ

1

Я только что создал проект интеграции CLR. https://github.com/rhyous/Db.FileTableFramework

Он имеет различные функции или процедуры, которые вы хотите: CreateFile, CreateDirectory, DirectoryExists. И на GitHub это, конечно, может быть изменено и улучшено кем угодно.

+1

Я поставил ваш вопрос как действительный. Я, наконец, создал SOA-решение с dapper вместо ADO.NET и работает очень хорошо. Большое спасибо – Alvmad

Смежные вопросы