Как хранить изображения в вашей файловой системе

В настоящее время у меня есть изображения (макс. 6 МБ), хранящиеся как BLOB в таблице InnoDB. По мере того, как размер данных растет, ночные резервные копии растут все медленнее и мешают нормальной производительности.

Итак, двоичные данные должны идти в файловую систему. (указатели на файлы будут храниться в БД.)

Данные имеют древовидное отношение:

- main site
  - user_0
    - album_0
    - album_1
    - album_n
  - user_1
  - user_n
etc...

Теперь я хочу, чтобы данные распределялись равномерно по структуре каталогов. Как мне это сделать?

Я думаю, я мог бы попробоватьMD5('userId, albumId, imageId'); и нарезать полученную строку, чтобы получить мой путь к каталогу:

  /var/imageStorage/f/347e/013b/c042/51cf/985f7ad0daa987d.jpeg

Это позволило бы мне сопоставить первый символ с сервером и равномерно распределить структуру каталогов по нескольким серверам.

Это однаконе сохраняйте изображения, организованные для каждого пользователя, вероятно распределяя изображения для 1 альбома по нескольким серверам.

Мой вопрос:
Каков наилучший способ сбалансированного хранения данных изображения в файловой системе при одновременном сохранении данных пользователя / альбома?

Думаю ли я в правильном направлении? или это неправильный способ делать вещи вообще?

Обновить:
Я пойду заmd5(user_id) нарезка строк для разделения на высшем уровне. А затем поместите все пользовательские данные в ту же корзину. Это обеспечит равномерное распределение данных при одновременном хранении пользовательских данных.

  /var
   - imageStorage
     - f/347e/013b
       - f347e013bc04251cf985f7ad0daa987d
         - 0
           - album1_10
             - picture_1.jpeg
         - 1
           - album1_1
             - picture_2.jpeg
             - picture_3.jpeg
           - album1_11
             - picture_n.jpeg
         - n
           - album1_n

Я думаю, что я буду использовать albumId, разделенный сзади (мне нравится эта идея!), Чтобы уменьшить количество альбомов в каталоге (хотя это не будет необходимо для большинства пользователей).

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос