基于Solr的数据检索技术研究

2017-03-02 03:17程知群韩高帅
关键词:数据量检索条件

程知群,章 超,韩高帅

(杭州电子科技大学电子信息学院,浙江 杭州 310018)

基于Solr的数据检索技术研究

程知群,章 超,韩高帅

(杭州电子科技大学电子信息学院,浙江 杭州 310018)

针对海量过车数据检索困难的问题,设计了一款基于Solr的大规模分布式数据检索系统.前端IPC采集的数据经过结构化处理之后发送到后端,数据先缓存在消息队列中,再通过Spark Streaming实时计算框架对缓存的数据进行消费,将数据搬运到数据库HBase中,最后由Solr爬取HBase中的数据,根据用户的配置建立索引文件.查询时,用户通过点击Web界面下发查询条件,系统将查询条件解析为Solr能够识别的查询语句,从索引文件中取出相应的信息,最后从HBase中取出完整的数据,返回到界面显示.测试结果表明,系统工作稳定,可存储海量多种类型数据,索引建立速度为1 000条/s,当数据库中存储一千亿条过车记录时,对此类TB级别数据进行各种条件查询的响应时间均在10 s之内.

大数据;智能交通;Solr;索引

0 引 言

智能交通旨在将物联网技术应用于交通领域,建立一个高效且覆盖范围广的交通系统,以缓解日益恶化的交通问题所需的交通基础设施建设和建设交通基础设施高额开销之间的矛盾[1].目前,国内外都很重视智能交通系统的开发.美国已铺开了由七大系统组成的智能交通系统.欧盟也将智能交通系统纳入到发展计划之中,给相关部门提供了充足的经费用于研究和实施[2].我国道路的发展已步入世界前列,然而我们的技术尚不如西方国家那么完善,我国的智能交通系统才迸发出萌芽[3].

数据检索技术是智能交通系统中的一样核心技术.道路监控每天产生海量的数据,仅浙江省一天产生的过车数据便有几亿,如何高效检索数据是现如今的一大难题.目前采用的仍然是传统的检索方式,使用数据库自带的数据检索和数据分区功能.然而在实际的数据检索中,由于数据库中所存储的信息量过于巨大.当一张数据表的数据量达到百亿甚至千亿级别,索引本身就过于巨大,索引过多还会影响到系统的性能.面对大规模数据检索时,数据库本身自带的检索功能根本无法满足实时数据检索的需求,极易照成系统的瘫痪[4].使用搜索引擎Solr能避免以上限制.搜索引擎采用了倒排索引技术,比一般的数据库索引更高效,并且Solr提供了分布式搜索的功能,能够处理各种类型的数据[5].同时Solr内部实现了分布式一致性机制,可以对Solr集群和索引文件进行一致性管理,并在数据容错和负载均衡方面都很成熟[6].但是当数据量达到一定规模时,使用Solr查询延时也比较高[7],针对该问题,本文设计了相关查询优化算法对其进行进一步的优化,使用Solr为数据库HBase提供搜索引擎服务,建立索引和查询.智能交通系统采用搜索引擎技术能够大幅度提高查询效率和系统稳定性,并且系统易于扩展,方便未来交通系统的发展.

1 系统总体设计

1.1 总体框架

本文设计的系统主要由3部分构成:索引建立模块、数据检索模块和用户搜索界面,系统总体框架如图1所示.索引建立模块负责过滤输入的脏数据并进行格式转换,根据索引配置文件建立索引;数据检索模块负责解析查询条件,返回查询结果;用户搜索界面用于用户下发检索条件信息的可视化.

图1 系统总体框架

1.2 索引建立

Solr是建立索引过程中的核心组件,是一个高并发、高效率的企业级搜索引擎.

通过配置Schema.xml和SolrConfig.xml对索引进行配置.前者定义索引字段及字段类型,并指定unique_id唯一标识一条数据.后者设置突出显示、分类、搜索以及其他请求等功能.在索引操作时,需要调用分词器提取词汇以加快检索.基于数据内容,系统选择使用空白分词器,索引设置为按月分段,定义缓存5 000条数据或者每隔5 s对输入的数据进行索引.

考虑到服务器的性能、前端发送数据速度和Solr建索引速度不匹配的问题,为了保证系统能稳定工作,将建立索引的速度控制在合理的范围之内,否则将造成系统的不稳定甚至崩溃.为此,本文设计的系统引入了消息队列来缓存输入的数据,再通过实时流式计算框架Spark Streaming从消息队列中消费数据,保障数据零丢失及系统的稳定运行.

1.3 数据检索

用户通Web界面下发查询条件,条件包含了检索字段、排序条件、时间跨度等信息.首先判断条件的正确性,避免出现未建立索引的字段,接着将其转换成Solr能够识别的查询条件.根据条件中的时间范围,定位到所需要查询的索引段,然后顺序遍历所有段,找出段内符合条件的结果集,最后对结果集进行排序.根据结果集取出数据库中相应的数据返回给用户界面.

但当结果集过大时,对结果集进行排序会相当耗时,并且对服务器性能要求也很高,无法满足系统快速响应的要求.为此本系统引入了一种压缩查询时间的方法,通过对时间条件的紧缩,从而减小了结果集的数据规模,提升了查询和排序的效率.对时间条件的紧缩是通过实时流式计算工具统计过车数据,构建查询的总数预测模型,通过对时间条件的多次紧缩,减少了查询排序的数据输入规模,提升了查询排序的速度.例如,已知一个时间段内的总的过车量为100条,而浙A车牌的出现的概率为80%,车身颜色为黑的出现概率为80%,那么在该时间段内查询浙A车牌且为黑色的过车总数为100×80%×80%=64,故将查询时间修改为查满64条的截止时间.以10亿条过车数据为例,通过优化后,平均查询时间为原来的15%~20%,精确查询耗时在1 s以内,模糊多条件查询耗时在2 s以内.

以上查询方法的优化仍不能满足超大规模数据量快速响应的需求,因此本文又设计了一种分Core的查询方式.Solr中一个Core表示某种类型数据的索引文件,并且单个Core容量有限,所以无法处理超大规模的数据.结合服务器多核低主频的特点,本文设计了一种自称分Core技术的方法,通过编码的方式,对特定的索引建立一套命名规则,动态地建立一系列的Core,因为多核服务器的核数量决定了查询线程的数量,所以可以同时起多个线程分别去对应的Core中进行查询.同时,当一个Core中的数据打满时,还会动态地建立一个新的Core,然后将数据打入到新Core中,加快了查询速度.通过以上两种方法的结合使用,极大提高了查询的速度和准确度,提升了用户的体验感.索引建立和检索流程如图2所示.

图2 索引建立和检索流程

2 系统性能测试

2.1 索引建立速度

储存一亿条数据在数据库中,数据所占的空间大小为4.32 GB,启用24条线程爬取表中数据,查看索引建立的速度.根据建立的Core的数目不同及爬取数据的快慢,确定建索引的最佳Core数,测试结果如表1所示.

表1 索引建立速度测试数据

由表1测试数据可以看出,Core的数目选择在8时,爬取数据表建立索引的速度比较快.虽然选择在建立10个Core时速度更快,但是过多的Core会导致Solr的稳定性下降,而且系统中不止一种应用,所以本文选择建立8个Core,即一张表的索引数据存在8个Core中.

2.2 数据查询速度

数据库中存储了一千亿条过车记录,验证在不同查询条件下系统的响应时间.假如时间范围够大,涉及到查询多个Core中数据,对性能有所影响.这里设置了两种查询条件,一种是只带了时间范围的单条件查询;还有一种是除了时间范围之外,还设置了其他的过滤条件的多条件查询.测试结果如表2所示.

表2 数据查询速度测试数据

由表2中的数据可以看出,不管是单条件查询和多条件查询,跨越Core的数目越多,查询的性能越差,所以在单个Core中存放的数据不宜过小.而且在跨越Core数目相同的情况下,单条件查询的响应时间要优于多条件查询的响应时间,但是都不会超过10 s,满足了系统要求的性能.而如果只是单纯地使用数据库自带的检索功能查询,在如此大规模数据量的情况下,将直接报查询超时错误,不会返回任何结果.

2.3 数据查询准确率

在不同数据量的情况下,使用多条件查询,查看返回结果的准确率.测试结果如表3所示.

表3 数据查询准确率测试数据

由表3中的数据可以看出,多条件查询在任何数据量的情况下,对于结构化数据检索搜索引擎都能百分之百地返回满足条件的数据,不会出现不符合查询条件的返回结果,故本系统能够实现精确查询.

3 结束语

本文基于交通领域应用场景的实际需求,在对Solr分布式索引技术进行深入研究分析的基础上,设计了Solr分Core算法和时间紧缩算法,实现了大规模海量过车数据存储与检索系统.通过实验验证了系统检索的高效性,满足智能交通快速响应的需求.然而,系统仍然存在一些不完善之处,对海量数据进行相关挖掘以获取数据背后的信息将是后续研究的重点.

[1]HERRERA-QUINTERO L F, JALIL-NASER W D, BANSE K, et al. Smart cities approach for Colombian Context. Learning from ITS experiences and linking with government organization[C]//Smart Cities Symposium Prague (SCSP), 2015. IEEE, 2015: 1-6.

[2]刘小明,何忠贺.城市智能交通系统技术发展现状及趋势[J].自动化博览,2015(1):58-60.

[3]SHI Z, ZOU Z, ZHANG C. Real-Time Traffic Light Detection With Adaptive Background Suppression Filter[J]. IEEE Transactions on Intelligent Transportation Systems, 2016, 17(3): 690-700.

[4]WANG D, HOI S C H, HE Y, et al. Retrieval-based face annotation by weak label regularized local coordinate coding[J]. IEEE transactions on pattern analysis and machine intelligence, 2014, 36(3): 550-563.

[5]蔡宇晶,孙玫肖,朱建军.Solr在乐龄易购网站中的应用[J].铁路计算机应用,2016,25(10):53-56.

[6]牛涛.建立基于Solr平台的质量信息检索系统[J].电子科学技术,2016(5):590-593.

[7]VOORHEES E M, OVER P, SOBOROFF I. Building Better Search Engines by Measuring Search Quality[J]. IT Professional, 2014, 16(2): 22-30.

Data Retrieval Technique Research Based on Solr

CHENG Zhiqun, ZHANG Chao, HAN GaoShuai

(SchoolofElectronicInformation,HangzhouDianziUniversity,HangzhouZhejiang310018,China)

A distributed data retrieval system is designed based on Solr. The front-end IPC collects monitor data, which sends them to the back-end after its structure processed. The data is cached in the message queue. Then it is carried to HBase by Spark Streaming the real-time calculation framework. Finally, Solr crawls data in HBase and create index file according to the user’s requirement of configuration. Users issue the query through clicking the Web interface in querying. Then the system analyzes inquiry condition into inquiry sentences that can be identified by Solr. Next, Solr extract the corresponding information from the index file. Finally, the system extracts the complete data from HBase and return to display in the interface. Measurement results show that the system is stable and can store many types of data. Over 1 000/s of indexing speed is achieved. The response times of a variety of conditions are less than 10 seconds, when the database is stored over 100 billion car records.

big data; intelligent transportation; Solr; index

10.13954/j.cnki.hdu.2017.01.003

2016-07-19

程知群(1964-),男,安徽巢湖人,教授,射频电路与系统.

TP319

A

1001-9146(2017)01-0011-05

猜你喜欢
数据量检索条件
排除多余的条件
基于大数据量的初至层析成像算法优化
选择合适的条件
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
为什么夏天的雨最多
专利检索中“语义”的表现
认同或对抗——论执政条件下的党群关系互动
国际标准检索
国际标准检索