我目前正在设计一个基于Web的应用程序架构,还需要提供某种图片存储功能。用户将能够上传照片作为服务的关键特性之一,同时查看这些图片也将是主要用途之一(通过Web)。
然而,我不确定如何在我的应用程序中实现可扩展的图片存储组件。我已经考虑了不同的解决方案,但由于缺乏经验,我期待听到您的建议。除了图像外,元数据也必须保存。
以下是我的初步想法:
使用(分布式)文件系统,例如HDFS,并准备专用的Web服务器作为“文件系统客户端”,以便保存上传的图像和服务请求。图像元数据保存在另一个数据库中,包括每个图像的文件路径信息。
在HDFS上使用类似BigTable的系统,例如HBase,并将图像和元数据一起保存。同样,Web服务器桥接图像上传和请求。
使用完全无模式的数据库,例如CouchDB,用于存储图像和元数据。此外,使用基于HTTP的RESTful API将其本身用于上传和交付。(附加问题:CouchDB通过Base64保存BLOB,但它是否能返回图像/ JPEG等形式的数据?)