У нас есть система, которая хранит (однозначные) миллионы изображений размером от 8 КБ до 500 КБ, в среднем около 15 КБ, в среднем 30 КБ. Общий объем данных в настоящее время составляет около 100 ГБ. Мы хотим получить доступ к изображению на основе хэша изображения (его можно изменить, но он должен вычисляться из изображения, чтобы эффективно проверять, находится ли изображение уже в хранилище данных). — изображения обрабатываются таким образом, что два изображения идентичны попиксельно, если и только если они идентичны побайтно). Настойчивость (очевидно) важна.
На данный момент мы храним их все как файлы внутри каталога — список каталогов кэшируется ядром, а фактическое чтение файлов выполняется по мере необходимости. Насколько я понимаю, основное преимущество хранилищ ключей и значений (по сравнению с использованием файловой системы как единой) заключается в чтении меньших значений, поскольку можно кэшировать всю страницу, а не только одно значение. Весь доступ в настоящее время осуществляется с веб-сервера (в интрасети) на том же сервере, что и данные, хотя мы можем перейти к проверке наличия ключей с удаленных компьютеров (в основном подключенных через 10GbE).
Нет особой причины для его изменения, хотя, учитывая изменения других основных частей системы, кажется целесообразным пересмотреть текущий подход.
Учитывая рабочую нагрузку, чтение которой в основном (одиночное) чтение в порядке вставки и случайный (хотя, вполне возможно, повторный) доступ к произвольным ключам, в дополнение к частым операциям записи (что-то порядка величины 1:10 запись:чтение), вероятно ли будет большим преимуществом перехода к хранилищу ключей-значений из файловой системы?