1、 背景
目前空间信息中信息检索的对象是数据的元数据,这些元数据分布在各个单位中,而这些元数据的总数目是非常巨大的),空间信息检索的目的就是如何在大数据中快速找到用户需要的数据信息。空间信息数据共享的本质个人认为是建立一个快速的、高效的搜索引擎或信息检索引擎,像google、百度等,所以可以借鉴传统搜索引擎的大数据处理技术解决空间信息领域中的检索问题。
2、 传统空间信息检索引擎存在的问题
个人认为存在的主要问题是查询效率低,并且没有采用新的大数据处理技术来改进。
1) 采用传统的关系数据库查询大数据:将元数据存入关系数据库,面对用户的多条件属性查询,只能逐条检索。面对如此巨大的元数据,这种方法是否是高效的?
2) 采用串行查询方法:各个拥有数据的单位各自返回查询结果,但是在每个单位内部查询仍然是串行查询。是否在每个单位内部可以采用并行查询提高效率?
3、 解决方案
下面是以单个拥有数据的单位作为研究对象,后续讨论如何将单个的解决方案应用在整个空间搜索引擎中。
3.1、 倒序索引
传统的顺序索引数据结构,对单个查询条件非常有效。但是空间信息领域中,通常是多个属性联合查询,在这情况下倒序索引就可以显著提高查询效率。所以可以考虑对所有元数据建立倒序索引,下图是系统的架构图
3.1、 并行索引
现在问题出来了,空间信息中元数据数目是非常大的,面对大数据建立索引的过程是非常耗时的,而且也没法全部读入内存中,如何加快建立索引的过程呢?我们可以采用并行的办法解决,下图是改进的架构图:
1) 并行索引阶段:在多台机器上并行对元数据建立索引(Reversal Index)
2) 并行查询阶段:查询索引的时候,每台机器返回符合要求的查询结果(Results)
3) 合并查询结果:对多台机器的查询结果进行合并。
由于在索引阶段和查询阶段都是并行处理,所以可以大大提高查询的效率。
3.1、 Lucene和Hadoop的应用
观察上图的过程,实现倒序索引(Reversal Index)最著名的开源包是Lucene,提供了全文检索的功能。而Hadoop在解决并行查询方面非常著名,上图的并行索引阶段和查询阶段可以看做Hadoop的Map和Reduce过程,所以可以考虑采用Lucene和Hadoop实现上图的架构。采用Lucene和Hadoop后的架构如下:
其高层架构视图(High-level Architecture)如下
Reference:
Web Search For A Planet: The Google Cluster Architecture