В настоящее время у меня есть изображения (максимум 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 альбома на нескольких серверах.
Мой вопрос: 
Каков наилучший способ хранения данных изображения в файловой системе сбалансированным образом, сохраняя вместе данные пользователя и альбома?
Я думаю в правильном направлении? или это неправильный способ делать вещи вообще?
  Update: 
Я поеду для фрагмента строки 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, разделенный сзади (мне нравится эта идея!), чтобы количество альбомов в каталоге меньше (хотя для большинства пользователей это не нужно).
Спасибо!
