我们有一个系统,存储着数百万幅图片,大小不等,从8KB到500KB不等,中值约为15KB,平均为30KB。总数据集目前约为100GB。我们想要通过图像的哈希值来访问该图像(这可以更改,但需要能够有效地从图像计算出来,以检查图像是否已在数据存储中 - 处理图像使得两个图像在像素级别上完全相同 IFF它们在字节级别上完全相同)。持久性是很重要的。
目前,我们将它们全部存储为目录中的文件 - 目录列表由内核缓存,并根据需要执行实际文件读取。据我所知,键值存储的主要优点(相对于使用文件系统作为其中之一)是读取较小的值,因为整个页面可以被缓存,而不仅仅是单个值。所有访问都来自与数据相同的Web服务器(位于内部网络上),尽管我们可能会移动到检查密钥是否存在于远程机器上(大多通过10GbE连接)。
虽然没有特定的原因要更改它,但随着系统的其他主要部分的更改,重新考虑当前方法似乎是值得的。
鉴于工作负载的读取主要是按插入顺序和随机(尽管很可能是重复的)访问任意键,除频繁写入(大约1:10写入:读取的数量级)之外,从文件系统转换到键值存储是否有很大优势?
目前,我们将它们全部存储为目录中的文件 - 目录列表由内核缓存,并根据需要执行实际文件读取。据我所知,键值存储的主要优点(相对于使用文件系统作为其中之一)是读取较小的值,因为整个页面可以被缓存,而不仅仅是单个值。所有访问都来自与数据相同的Web服务器(位于内部网络上),尽管我们可能会移动到检查密钥是否存在于远程机器上(大多通过10GbE连接)。
虽然没有特定的原因要更改它,但随着系统的其他主要部分的更改,重新考虑当前方法似乎是值得的。
鉴于工作负载的读取主要是按插入顺序和随机(尽管很可能是重复的)访问任意键,除频繁写入(大约1:10写入:读取的数量级)之外,从文件系统转换到键值存储是否有很大优势?