Хранение ключей и значений для от средних до больших значений

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

В настоящий момент мы храним их все как файлы в каталоге - список каталога кэшируется ядром, и фактическое чтение файлов выполняется по мере необходимости. Насколько я понимаю, основным преимуществом хранилищ ключей и значений (по сравнению с использованием файловой системы как одной) является чтение меньших значений, поскольку можно кэшировать всю страницу, а не только одно значение. В настоящее время весь доступ осуществляется с веб-сервера (в интрасети) на том же сервере, что и данные, хотя мы можем перейти к проверке наличия ключей с удаленных машин (в основном подключенных через 10GbE).

Нет какой-либо особой причины для его изменения, хотя с изменением других основных частей системы кажется целесообразным пересмотреть текущий подход.

Учитывая рабочую нагрузку, чтение которой в основном представляет собой (однократное) чтение в порядке вставки и случайный (хотя вполне возможно, повторяющийся) доступ к произвольным ключам в дополнение к частым операциям записи (что-то порядка 1:10 запись: чтение), Есть ли много преимуществ в переходе к хранилищу значений ключей из файловой системы?

16
задан Brian Tompsett - 汤莱恩 19 January 2016 в 16:46
поделиться