CMS如何管理和存储海量图片?
图片管理的应用很常见,类似的在线相册、作品集、在线图库、医学图库、以及在线展览,都是图片的存储和运用,图书馆、文化馆、展览馆、高校、中小学等单位应用的比较多,所以,我们之前就有一篇文章讲《如何基于开源系统构建图库/图片管理系统》,有兴趣可以看看。
那么,如何管理海量图片、大量图片呢? 会不会遇到存储问题、性能问题、搜索问题?本文就目前我们对图片的处理和架构,做一个分析,仅供参考。
CMS存储和管理图片
我们通过CMS来管理图片,所以,通常情况下,每上传一张图片,都要建立一条数据库记录,在Drupal里面叫Media类型。
用CMS表来存储图片,这种做法好处:
1、图片有详细的数据信息,比如加标签、说明、分类等信息。
2、图片有引用信息,被其他类型应用,被文章引用,会标记,也就是没有被引用的图片可以被删掉。
这样做缺点就是所有图片都会存数据库,因此图片越多,会带来数据库本身的压力,这个算是缺点。
当然,总体来讲,还是利大于弊,不可能所有图片类似文件的存储,那样没有管理,没有说明,没有索引,那就是百度云盘了,跟图片管理系统或者说CMS没一毛钱关系了。
海量图片存储的三要素
那么在海量图片存储中,需要注意哪些呢?首先,要保持文件系统的性能,所以要分文件夹,可以按日期。其次,保持数据库的表大小,可以进行集群或者分表。最后,就是如何搜索和查找图片,这时候可以通过专业的搜索引擎工具,比如Solr和Elastic Search,与CMS集成,即可实现信息的索引。
所以,关键三要素的解决方案和架构图如下:
1. 图片存储:按日期份文件夹、物理存储对接OSS存到云服务。
2. 数据表存储:分表或者做Drupal单例集群。
3. 搜索和交互:通过索引工具去索引和检索。
架构可以参考上图,最终的操作都是直接跟Solr交互,所以性能会非常好,内容的管理和落地都是基于CMS架构的,文件的存储都是基于云存储,所以整体的架构和性能是可以保障的。
下面也是我们基于Drupal构建的图片管理系统,可以分文件夹、搜索、加标签等操作,用户在使用的时候,只需要从媒体库里面选择即可。
最后,关于Drupal的资源图库管理系统,详情参考《如何基于开源系统构建图库/图片管理系统》。
详细的方案介绍,可以参考我们的《非遗数据库方案介绍》
更多技术资料,可以参考我们之前相关介绍文章,如果需要建设相关数据库,以及Drupal灵活的元数据/检索/可视化构建演示或者资料,可以联系我们。
6、文档资源库建设之搜索引擎如何搜索文件的内容(pdf/wrod)?