Я, скорее всего, буду участвовать в проекте, где важным компонентом является хранилище для большого количества файлов (в данном случае изображений, но оно должно просто действовать как хранилище файлов).Крупномасштабное хранилище изображений
Количество входящих файлов должно составлять около 500 000 в неделю (в среднем около 100 КБ каждый), достигая 100 000 файлов в день и 5 в секунду. Общее количество файлов, как ожидается, достигнет десятков миллионов, прежде чем достигнет равновесия, когда файлы будут истекли по разным причинам со скоростью ввода.
Так что мне нужна система, которая может хранить около 5 файлов в секунду в часы пик, при чтении около 4 и удалении 4 в любое время.
Моя первоначальная идея заключается в том, что на самом деле достаточно достаточной файловой системы NTFS с простым сервисом для хранения, истечения срока действия и чтения. Я мог представить себе, что служба создает подпапки для каждого года, месяца, дня и часа, чтобы сохранить количество файлов в папке как минимум и разрешить ручное выключение в случае необходимости.
Обсуждалось большое решение NTFS here, но я все же мог бы использовать некоторые советы о том, какие проблемы следует ожидать при создании хранилища с указанными спецификациями, о том, какие проблемы обслуживания ожидать и какие существуют альтернативы. Предпочтительно, я хотел бы избежать распределенного хранения, если это возможно и практично.
редактировать
Спасибо за все замечания и предложения. Дополнительная информация о бонусе о проекте:
Это не веб-приложение, где изображения предоставляются конечными пользователями. Не раскрывая слишком много, так как это находится на стадии контракта, это больше относится к категории контроля качества. Подумайте о производстве с конвейерной лентой и датчиками. Это не традиционный контроль качества, так как ценность продукта полностью зависит от нормальной работы базы данных изображений и метаданных.
Доступ к изображениям осуществляется на 99% автономным приложением в порядке первого порядка, но также возможен случайный доступ к пользовательскому приложению. Изображения старше дня будут в основном использоваться в архивных целях, хотя эта цель также очень важна.
Истечение срока действия изображений соответствует сложным правилам по разным причинам, но в какой-то момент все изображения должны быть удалены. Правила удаления следуют бизнес-логике, зависящей от метаданных и пользовательских взаимодействий.
Время простоя каждый день, где может выполняться техническое обслуживание.
Желательно, чтобы хранилище файлов не должно было связывать местоположение изображения с сервером метаданных. Расположение изображений должно быть однозначно вычитано из метаданных, возможно, хотя и для базы данных сопоставления, если выбрана какая-либо хеширующая или распределенная система.
Так что мои вопросы:
- Какие технологии будут делать надежную работу?
- Какие технологии будут иметь самые низкие затраты на внедрение?
- Какие технологии будут проще обслуживать ИТ-отдел клиентов?
- Какие риски существуют для данной технологии в этом масштабе (данные 5-20 ТБ, 10-100 миллионов файлов)?
Хранить в пределах директории ума # файлов, мы столкнулись вопрос о Redhat с максимальным пределом файла для каждого файла, fyi. – Jakub
Вот почему я хотел разбить файлы на папки в зависимости от их года, месяца, дня и часа. В конце концов, я не ожидаю более 18000 файлов в час. – Holstebroe
Также см. Http://stackoverflow.com/questions/2104720/memory-leak-using-sql-filestream/2104944#2104944 –