CMS против масштабируемости идентификатора хранилища файловой системы

Обратите внимание на следующее:

Я храню около 1,2 миллиона файлов TIF размером от 40 до 120 КБ.

Эти документы хранятся на сервере Windows с файловой системой NTFS.

Документы хранятся с использованием следующих переменных:

  • client
  • document type
  • image folder
  • actual image

См. ниже:

C:\<client_id>\<doc_type_id>\image001\1.TIF

Пример

C:\1\3\image001\1.TiF

Это система, размещенная на PHP.

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

Я собираюсь полностью заменить хранилище на CMS Jackrabbit.

Было бы так? Или

Хранит документы в таком формате:

  • Customer
  • Document type
  • Julian date day of the year document imported.
  • Current User
  • 6 digit unique code

Пример

C:\1\1\167\2\453257\image001\image.TIF

будет столь же эффективным?

Пожалуйста, уберите все остальные соображения о CMS и файловой системе. например, управление версиями, резервное копирование данных.

Спасибо.


person Koekiebox    schedule 04.09.2009    source источник
comment
Можете ли вы уточнить, какие шаблоны доступа вы ожидаете?   -  person Amber    schedule 05.09.2009
comment
Пути будут храниться в базе данных. Пользователи будут запускать запросы на основе столбцов, хранящихся в базе данных. В зависимости от того, какой результат поиска он выберет, путь будет извлечен для выбранного результата и показан пользователю.   -  person Koekiebox    schedule 05.09.2009
comment
Если он работает, не меняйте его до тех пор, пока вам не понадобится, просто выделите код, который считывает изображения, в его собственные методы, чтобы вы могли изменить его, ЕСЛИ вам это понадобится позже.   -  person Ian Ringrose    schedule 10.09.2009


Ответы (3)


Ваш вопрос очень похож на этот. Ваша нагрузка в первую очередь читает ваши изображения или пишет? Если вам нужна масштабируемость чтения, в сообщении описывается memcached, который, вероятно, является всем, что вам нужно. jackrabbit имеет множество дополнительных функций, но больше для иерархического хранения текста. Не уверен, что это улучшит производительность ваших изображений. Кроме того, если вы все же выберете jackrabbit, убедитесь, что ваша иерархия контента достаточно глубокая, чтобы jackrabbit оставался эффективным. У любого родителя, имеющего 10 000 или более детей, будет невысокая успеваемость.

person DaveParillo    schedule 08.09.2009
comment
memcache поможет только в том случае, если их небольшое количество, если изображения читаются много и у вас более одного сервера. В противном случае просто используйте 64-битную систему и поместите много оперативной памяти на файловый сервер. Позвольте ОС сделать кеширование за вас. - person Ian Ringrose; 10.09.2009

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

c:\<customer_id>\<document_year>\<document_month>\<document_day>\actual_file.tif

Я бы также высказал предположение, что в зависимости от настроек вашего сервера, возможно, стоит предоставить каждому клиенту (в зависимости от объема данных или типа учетной записи) свой собственный диск / раздел.

Имейте в виду, что без какой-либо системы пользовательского контроля или разрешений эти пути к файлам можно было бы предсказуемо угадывать и просматривать (как если бы вы этого еще не знали ... Я знаю, мне очень жаль). Тот факт, что вы подняли маркер «шестизначный уникальный код», предполагает, что вам не нужен путь общего формата, но я бы посоветовал вам использовать общий формат (любого формата, который вы в конечном итоге выбрать) было бы лучше.

Еще в те дни, когда я работал с Windows, я сортировал свои собственные каталоги по первичному отношению файла, в настоящее время это будет считаться «тегом» (например, c:\documents and settings\university\year1\module21\assignment1.doc), это упростило поиск вещей позже. Похоже, что структура каталогов ваших клиентов принудительно применена вами - но найти то, что они сделали на прошлой неделе, будет легче, если им нужно будет пройти только дату, запомнив, куда они положили что-то на прошлой неделе, когда они дошли до папки с шестизначными уникальными номерами будут, ну, трудно. В лучшем случае.

person David says reinstate Monica    schedule 05.09.2009

Предложенную вами стратегию хранения необходимо будет рассмотреть, если вы собираетесь переместить свой контент на другие машины (SAN / NAS). Для этого вам нужно будет удалить все данные о клиентах из пути и просто создать хэш, который вы затем сохраните в базе данных, чтобы связать с файлом, к которому вы обращаетесь. Таким образом, у вас останется примерно такая структура папок:

NAS1/00/01/86/63/54/89/image01/image.tiff
NAS2/00/02/46/62/22/11/image02/image.tiff
...

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

И, как упоминал Дейв, убедитесь, что у вас не слишком много детей в одной папке. В районе 10.000 все становится довольно вялым.

person Miha Hribar    schedule 08.09.2009