Хранение файлов в файловой системе - PullRequest
0 голосов
/ 09 ноября 2009

У меня есть приложение, которое хранит изображения в базе данных. Теперь я понял, что это не лучший способ сделать это из-за производительности.

Я начал извлекать все «BLOB-объекты» из базы данных и добавлять их (через виртуальную папку) в папку данных

проблема в том, что у меня уже хранится 8000 BLOB-объектов, и если я помещу их в папку, подобную этой "data / / ", эта папка будет содержать множество папок, которые будут управляемы.

Мне было интересно, как вы можете хранить ваши файлы лучше всего? сгруппируйте их по датам создания, например, «data / / / / / ». Я также должен добавить, что наши файлы хранятся в дереве в базе данных. Мне было интересно, если я должен сопоставить эту структуру с файловой системой, единственная проблема в том, что вы можете перемещать ветви. Это означало бы, что я должен переместить ветви в файловой системе.

Любая помощь приветствуется.

Grtz, M

Ответы [ 4 ]

7 голосов
/ 09 ноября 2009

Какую версию SQL Server вы используете? Потому что, если вы используете 2008, вы можете использовать FILESTREAM тип данных для хранения изображений. Это так же эффективно, как хранение их в хранилище файлов, но без каких-либо связанных с этим хлопот. См. Начало работы с файловым потоком SQL Server 2008 .

1 голос
/ 09 ноября 2009

Большинство файловых систем для данных BLOB устанавливают несколько подкаталогов. Например, если у вас есть идентификаторы 1-10000, вы можете иметь:

00/
    00/
    01/
    02/
        00020.blob
        00021.blob
        ...
    ...
01/
02/
03/
...

Другой вопрос, который у меня есть к вам: почему вам так плохо управлять ими как BLOB?

1 голос
/ 09 ноября 2009

Простая стратегия - группировать по первым [нескольким] цифрам. E.g.:

1/
    2/
        123.blob
        129.blob
    5/
        151.blob
2/
    0/
        208.blob

Таким образом, вы знаете, что в каталоге никогда не будет более 10 подкаталогов. Конечно, вы можете использовать больше или меньше уровней (каталогов) и / или больше цифр на уровень.

Более сложная, динамическая система может создавать подуровни по требованию: если число больших двоичных объектов в определенном каталоге превышает предварительно установленный максимум, создайте еще 10 подкаталогов и переместите файлы в них.

0 голосов
/ 09 ноября 2009

Вам нужно хранить файлы в соответствующей древовидной структуре? Если нет, вы можете назвать файл /YOURFOLDER/blobid_blobname.extension. Таким образом, папка загрузки действует исключительно как хранилище данных, а не подражает структуре данных.

...