论文部分内容阅读
近年来随着Web2.0的发展,各种创新的应用和产品不断在互联网中出现使我的工作生活越来越离不开网络应用。而由此产生的大规模甚至超大规模数据存储和运算需求仅仅依靠传统的关系数据库存储手段已经很难满足当前各种互联网应用大规模和时效性的应用要求。为了处理当前网络应用高要求以及硬件资源贫乏之间的矛盾,一种针对特定应用设计特定存储系统的运动在近年来逐渐发展起来,它不以传统的关系数据库作为基本的存储处理手段,而是根据自身应用的实际需要选择以及设计存储系统,以此用有限的资源来实现更高效更快速的存储运算任务。 本文将以高性能网络爬虫的URL存储系统为切入点,研究与存储系统相关的影响爬虫性能的几个关键因素,然后应用非关系数据库的一些理论基础和设计思想针对网络爬虫设计和研究专门的海量URL存储系统,从而满足爬虫对快速进行大规模URL数据的插入、去重、修改、查询的需求。在此基础上最终完成存储系统的实现,满足我们现有爬虫系统的各项要求,并使爬虫系统得到较大的性能改善。 本文主要的成果有以下几个方面: 首先,针对爬虫URL存储的特点内部系统实现的要求,使用键值存储方式,缩减了不必要的结构化查询功能并改为自定义增减存取功能。同时在键值存储的基础上设计了3级结构的物理存储方式,使存储系统能够自动实现水平分区。 其次,采用了URL进行分级哈希的方式得到多级键来生成主键的方式,用于快速查找定位数据路径,以及快速进行数据存储更新。同时能够将相同域名的数据集中到同一个存储单元中,有利于针对爬虫按域名存取方式时高空间局部性特点进行性能提升。 然后,为存储系统设计和实现了基于多级键主键索引方式,采用了2级B+树的方式对URL进行域名聚集和去重分散,使存储系统能够实现自动 URL去重以及在较大数量级数据的情况下仍能保持良好的存取性能以及稳定的内存消耗。 最后,基于以上的研究成果,本文论述了针对爬虫的非关系海量URL存储系统的设计与实现,为日后提高爬虫性能打下了良好的理论研究基础。