论文部分内容阅读
随着互联网的快速普及,互联网企业累积了海量的数据,往往单个表的数据量到达千万级别,并且还在快速增长中。由于关系型数据库的使用方便、稳定性高、提供事务功能等特点,大部分企业使用关系型数据库作为数据搜索的唯一方式,但是在面对如此海量数据时,直接使用关系型数据库进行数据搜索,往往一个简单的SQL查询就需要几秒钟,这对于大部分需要实时处理的业务来说是不可接受的。但是,由于关系型数据库的稳定性以及提供事务功能等优点,在很多业务场景下是不可或缺的。针对以上背景,本文就系统面临海量数据时,如何提供高效的搜索性能为目的,研究并实现了基于Elasticsearch的实时搜索系统。本文主要工作内容包括下面几个方面:(1)结合实际环境对基于Elasticsearch的实时搜索系统需求进行了详细的分析,在此基础上对系统总体结构、系统工作流程以及数据库结构进行了设计。(2)对关系型数据库增量数据采集方法进行了研究,结合实际环境,提出了分别对存量和增量数据进行获取的方法,同时,针对数据采集与索引构建速度不匹配的问题,提出了对获取的数据进行缓存的中继处理方法。(3)结合实际业务的需求以及Elasticsearch提供的并发写入功能,提出了Elasticsearch索引构建方法,包括数据过滤、数据组装和事务顺序控制,其中通过数据过滤对敏感信息进行处理,使用数据组装功能实现自定义的业务需求,采用事务顺序控制保证数据写入Elasticsearch的顺序与写入关系型数据库顺序一致。(4)实现了基于Elasticsearch的实时搜索系统,并且对系统检索性能和数据同步延迟进行了测试,通过对本系统和MySQL两者的搜索性能进行的对比,验证了本系统在面对海量数据时,能够提供高效的搜索性能。