Скорее всего, я буду участвовать в проекте, где важным компонентом является хранилище для большого количества файлов (в данном случае изображений, но оно должно действовать как хранилище файлов).
Ожидается, что количество входящих файлов составит около 500 000 в неделю (в среднем около 100 Кб каждый), максимум - около 100 000 файлов в день и 5 файлов в секунду. Ожидается, что общее количество файлов достигнет десятков миллионов до достижения равновесия, когда срок хранения файлов истекает по разным причинам при скорости ввода.
Поэтому мне нужна система, которая может хранить около 5 файлов в секунду в часы пик, считывая около 4 и удаляя 4 в любое время.
Моя первоначальная идея состоит в том, что на самом деле должно быть достаточно простой файловой системы NTFS с простой службой для хранения, истечения срока действия и чтения. Я мог бы представить себе службу, создающую подпапки для каждого года, месяца, дня и часа, чтобы сохранить минимальное количество файлов в папке и разрешить истечение срока действия вручную в случае необходимости.
Большое решение NTFS обсуждалось здесь, но Я все еще мог бы использовать несколько советов о том, каких проблем ожидать при создании хранилища с указанными спецификациями, каких проблем с обслуживанием ожидать и какие существуют альтернативы. Я бы предпочел избегать распределенного хранилища, если это возможно и практично.
изменить
Спасибо за все комментарии и предложения. Еще немного дополнительной информации о проекте:
Это не веб-приложение, в котором изображения предоставляются конечными пользователями. Не раскрывая слишком много, так как это находится на стадии контракта, это больше относится к категории контроля качества. Подумайте о производственном предприятии с конвейерной лентой и датчиками. Это не традиционный контроль качества, поскольку ценность продукта полностью зависит от бесперебойной работы базы данных изображений и метаданных.
Доступ к изображениям осуществляется на 99% автономным приложением в порядке «первым пришел - первым обслужен», но также будет иметь место произвольный доступ со стороны пользовательского приложения. Изображения старше одного дня в основном служат для архивирования, хотя эта цель также очень важна.
Срок действия изображений определяется сложными правилами по разным причинам, но в какой-то момент все изображения должны быть удалены. Правила удаления следуют бизнес-логике, зависящей от метаданных и действий пользователя.
Каждый день будет простой, когда можно будет провести техническое обслуживание.
Предпочтительно файловому хранилищу не нужно будет сообщать местоположение изображения обратно на сервер метаданных. Местоположение изображения должно быть однозначно вычтено из метаданных, возможно, через базу данных сопоставления, если выбрана какая-то хеш-система или распределенная система.
Итак, мои вопросы:
- Какие технологии будут надежно работать?
- Какие технологии будут иметь самые низкие затраты на внедрение?
- Какие технологии проще всего обслуживать IT-отделу клиента?
- Какие риски существуют для данной технологии в этом масштабе (данные 5–20 ТБ, 10–100 миллионов файлов)?