软件系统的数据检索设计
随着业务量加大,数据检索量也会日益增多,为了减轻数据库压力,本系统采用ElasticSearch来实现数据检索功能。
简单来说,Elasticsearch 是一个实时的分布式存储、搜索、分析的引擎,它可以近乎实时的存储、检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据,ElasticSearch的检索流程如下:
数据检索流程图
1) 执行refresh操作将mem buffer中的数据写入到新的segment并写入os cache,然后打开本segment以供search使用,最后再次清空mem buffer。
2) 一个commit point被写入磁盘,这个commit point中标明所有的index segment。
3) filesystem cache(os cache)中缓存的所有的index segment文件被fsync强制刷到磁盘os disk,当index segment被fsync强制刷到磁盘上以后,就会被打开,供查询使用。
translog被清空和删除,创建一个新的translog。