奇虎360 HBASE二级索引实践:提升检索性能
需积分: 9 95 浏览量
更新于2024-08-15
收藏 1.78MB PPT 举报
"奇虎360公司的HBASE二级索引设计与实践,旨在解决基于行键(Row Key, RK)的索引单一性、多维度查询困难等问题,以适应大规模数据存储和实时多维度查询的需求,如网络行为特征分析和病毒样本分析。"
在HBase这种分布式列式存储系统中,原始的索引机制主要依赖于行键,这导致了在处理多列或多列组合查询时的局限性。为了应对这一挑战,360公司进行了二级索引的设计和实施。
设计部分,首先介绍了总体设计思路,通过创建额外的索引列,使得查询可以不再局限于行键,而是能够覆盖到更多的列。在每个Region中,除了存储原始数据外,还存储了对应列的索引信息。例如,对于原数据行键`RK1`、`RK2`等,它们的特定列`c21`、`c22`等会被用作索引,通过这些索引列可以快速定位到所需数据。索引列存储在与原始数据相同的一级区域内,但使用不同的存储区域,以区分数据和索引。
接着是索引类型的设计,包括单列等值、范围查询以及多列之间的与、或条件查询。这些设计支持了多样化的查询需求,允许用户根据不同的条件获取满足要求的记录、记录数量或特定列的统计信息。
在写入路径中,当数据更新时,不仅需要更新原始数据,还需要同步更新对应的索引。这涉及到对写操作的优化,以减少对系统的影响。读取路径则依赖于索引,通过索引快速定位数据,从而提高查询效率。在Region分裂和索引重建过程中,需要确保索引的完整性和一致性。
优化方面,提出了汇聚操作,这可能是为了合并相似的查询请求,减少服务器负载。同时,也考虑了模糊查询的支持,使用户可以进行更加灵活的搜索。
在实践中,通过在70台机器上部署HBase集群(每台机器配置为2路6核CPU,64GB内存,4块12TB硬盘),分别测试了CASE1和CASE2两种场景。CASE1有19列数据和17个索引,数据规模达到5000亿行,而CASE2有10列和10个索引,数据规模为4000亿行。尽管CASE2的查询时延稍微优于CASE1,但两者都显著降低了查询时间,返回条目数也符合预期。
这个二级索引设计与实践案例展示了如何通过改进HBase的索引机制来提升大规模数据的检索性能,以满足实时多维度查询的需求,尤其在处理大数据量的场景下,这种设计能有效降低查询延迟,提高系统效率。
2015-01-21 上传
2019-09-24 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-06-06 上传
2021-09-25 上传
2023-01-30 上传
黄子衿
- 粉丝: 21
- 资源: 2万+
最新资源
- snake-js:带有Javascript和HTML5的Snake
- badges-and-schedules:熨斗学校实验室
- ArtCenterGame
- mywonkysounds:SoundManger 2 音板! 我的声音!
- birdinginvermont.com
- Usso:sso统一登录系统
- Design-Algorithm-Homework
- MonadicRP:GHC Haskell中的相对论编程
- monolithic-sample
- vue-shop:Vue + Element UI电商后台管理系统演示
- Neurotypical-mode:一种Chrome扩展程序,可关闭除Microsoft Stream或Manaba之外的所有选项卡
- observ-conference:实验
- module-blog-graph-ql:Magento 2 Blog GraphQL扩展。 为Magefan博客模块提供GraphQL端点
- Excel模板00现金日记账.zip
- Naive-Bayes-Classifier
- SmartFactory