在大数据时代,关系型数据库面临着海量数据存储的挑战。HBase是一种基于列存储的NoSQL数据库,广泛应用于大数据存储。HBase在数据的检索方面仍然存在着不足之处,本文对HBase的数据检索技术进行分析和研究,针对目前存在的问题提出了相应的改进和优化。针对HBase在查询数据时需要访问磁盘,查询速度慢的问题,本文提出使用Redis索引HBase的热点数据,并综合考虑数据的查询频率、更新频率和历史积热对缓存的影响,设计了一种基于数据查询频率和更新频率的热值缓存驱逐策略,提高了Redis的缓存命中率。针对HBase在检索非行键字段时需要全表扫描,检索效率低的问题,本文提出了为非行键字段建立二级索引的策略,设计了一种基于协处理器和Redis的二级索引方案。实验结果表明改进后的缓存驱逐策略的命中率高于LRU策略,在查询模块引入Redis缓存热点数据并且为非行键字段建立二级索引后,改进后的查询模块的数据检索性能提升显著,极大地提高了查询速度。
随着互联网在日常生活中地位的不断提高,业务系统和各个网站所需处理的业务量和数据量快速增长,例如短视频软件或者社交软件需要为用户存储和计算大量数据。由于人们对计算资源利用效率、存储与处理数据能力以及资源集中化整合日益迫切的需求, 云计算与大数据应运而生[1] [2]。
随着网络技术的发展,特别是移动通信和社交网络的快速发展,需要处理TB 级别甚至PB 级别的数据。常用的关系型数据库没有办法处理这样的海量数据。海量数据的检索也对传统的关系型数据库[3]提出了严峻的挑战。
由于传统数据库无法满足高并发请求和高存储空间,非关系型数据库应运而生,如MongoDB,Cassandra等,其中HBase 应用最为广泛。HBase 是一种分布式非关系型面向列的开源数据库,广泛应用于大数据的存储。HBase 使用HDFS 作为文件数据存储系统,使用MapReduce 处理海量数据,使用Zookeeper 作为协作服务[4]。HBase [5]已经应用于许多大型网络,如Facebook、淘宝、Twitter。HBase 源自谷歌提出的Bigtable,它的底层利用HDFS 来存储数据,HDFS 是Hadoop 生态系统的一部分[6]。HBase 不断地对磁盘进行读写请求,这使得其查询性能受到硬件的限制[7]。利用内存缓存技术缓存HBase 的热点数据已成为提高其查询性能的常用方法,HBase 的内存缓存技术采用了第三方工具(如Redis、Memcache 等)和一组辅助工具[8]。按照LSM-Tree 模型编写缓存辅助工具的方式会降低HBase 的写入性能。第三方工具提供的缓存驱逐策略很少,而且它们无法支持缓存更新。目前,面向HBase 的数据缓存技术主要从硬件和软件两个方面进行考虑。TBF [9]提出了一种基于固态硬盘的缓存驱逐策略。该算法结合了Clock 和Bloom 过滤器,减少了元数据的空间开销。microsoft [10]使用指数平滑方法来区分记录的数据查询的频率以及冷数据和热数据之间的差异,从而动态地调整冷数据和热数据的边界。然而,该方法主要用于日志数据查询的分析。Zhang 等人[11]提出了一种使用Redis 指数平滑来预测记录查询频率的方法。该方法比LRU 算法有更高的命中率, 但该方法直接使用Redis 作为持久数据库, 不适合大数据处理。
HiBase [12]